0
我有一个自定义控件进度条,我需要通过另一个线程进行更新..似乎没有一个自定义控件可用的Invoke,BeginInvoke,InvokeRequired等,有没有人有任何想法如何实现此内部控制?如何将调用方法添加到自定义控件?
我有一个自定义控件进度条,我需要通过另一个线程进行更新..似乎没有一个自定义控件可用的Invoke,BeginInvoke,InvokeRequired等,有没有人有任何想法如何实现此内部控制?如何将调用方法添加到自定义控件?
您将需要看Dispatcher.Invoke
方法来做到这一点。我有一个包装此功能对我来说是很方便的方法:
public object RunOnUiThread(Delegate method)
{
return Dispatcher.Invoke(DispatcherPriority.Normal, method);
}
我用这样的:
UiThreadManager.RunOnUiThread((Action)delegate
{
// This code will run on the UI thread
});
请注意,您需要使用正确的Dispatcher
对象从UI线程,而不是一个这是在非UI线程上创建的。请参阅MSDN上的Dispatcher.Invoke
Method页面以获取更多信息。
请让我知道这是不是你以后。
嗨谢里登,这很接近,我想包裹他们,让他们保持与其他控件上看到的相同的呼叫签名,所以也许?公共对象Invoke(委托方法) { return Dispatcher.Invoke(DispatcherPriority.Normal,method); }但是如何以同样的方式包装RequiresInvoke? – JGU
对不起,但这是什么意思? – Sheridan
无所谓,我想通了..谢谢谢里登! – JGU