【发布时间】:2013-10-22 05:07:06
【问题描述】:
我有一个自定义控件进度条,我需要通过另一个线程进行更新。自定义控件似乎没有 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
});
请注意,您需要使用来自 UI 线程的正确 Dispatcher 对象,而不是在非 UI 线程上创建的对象。请查看 MSDN 上的 Dispatcher.Invoke Method 页面了解更多信息。
如果这不是你想要的,请告诉我。
【讨论】: