MvvmLightToolkit:是否需要DispatcherHelper.Initialize()方法的执行?

时间:2014-06-17 13:00:15

标签: c# wpf silverlight windows-phone mvvm-light

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();
    }
    //...
}

我认为这样就不需要了

1 个答案:

答案 0 :(得分:0)

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

这个原因可能是DispatcherHelper.Initialize();方法应该在主线程中执行,如果它是使用静态构造函数自动完成的,那么静态构造函数就有可能在另一个后台线程上执行。