Mvvm Light Toolkit
包含DispatcherHelper
这是一个非常有用的工具。它允许以非常简单的方式从后台线程同步主UI Thread
。例如DispatcherHelper.CheckBeginInvokeOnUI()
:
//In any moment before...
DispatcherHelper.Initialize();
ThreadPool.QueueUserWorkItem(
o =>
{
//Do something
DispatcherHelper.CheckBeginInvokeOnUI(()=>StatusTextBlock.Text = "Done");
}
);
在使用DispatcherHelper
之前,我通常使用MainThread
' SynchronizationContext
来提交从非主要主题到视图的任何更改。
我的问题是:为什么在使用该类之前必须执行DispatcherHelper.Initialize
方法?可以在静态构造函数中首次调用它吗?例如:
public class DispatcherHelper
{
private static void Initialize()
{
//...
}
static DispatcherHelper(){
Initialize();
}
//...
}
我认为这样就不需要了
答案 0 :(得分:0)
经过研究,我认为我找到了一个很好的理由:
这个原因可能是DispatcherHelper.Initialize();
方法应该在主线程中执行,如果它是使用静态构造函数自动完成的,那么静态构造函数就有可能在另一个后台线程上执行。