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之前,我通常使用MainThreadSynchronizationContext来提交从非主线程到视图的任何更改。

我的问题是:为什么在使用类之前必须执行DispatcherHelper.Initialize方法?它可以在静态构造函数中第一次调用吗?例如:

public class DispatcherHelper
{
    private static void Initialize()
    {
         //...
    }
    static DispatcherHelper(){
        Initialize();
    }
    //...
}

我认为这样是不需要的

MvvmLightToolkit: DispatcherHelper.Initialize()方法需要执行吗?

经过一番研究,我想我找到了一个很好的理由:

这个原因可能是DispatcherHelper.Initialize();方法应该在主线程中执行,如果使用静态构造函数自动执行,则存在静态构造函数在另一个后台线程中执行的可能性。