MvvmLightToolkit: DispatcherHelper.Initialize()方法需要执行吗?
本文关键字:执行 方法 DispatcherHelper Initialize MvvmLightToolkit | 更新日期: 2023-09-27 18:08:53
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();
}
//...
}
我认为这样是不需要的
经过一番研究,我想我找到了一个很好的理由:
这个原因可能是DispatcherHelper.Initialize();
方法应该在主线程中执行,如果使用静态构造函数自动执行,则存在静态构造函数在另一个后台线程中执行的可能性。