DispatcherHelper的简单示例

时间:2011-09-13 12:03:41

标签: silverlight-4.0 mvvm-light

我正在试图弄清楚如何在SL中使用DispatcherHelperftom MVVM light toolkit,但我找不到任何示例。

从这个框架的主页我知道

  

DispatcherHelper类,一个帮助您创建的轻量级类   多线程应用程序。

但我不知道如何使用它。

我如何以及如何使用它?

1 个答案:

答案 0 :(得分:18)

当您想要在不同线程上运行的代码对UI线程上的组​​件进行更改时,您只需要DispatcherHelper。例如。在Silverlight应用程序中,您调用Web服务来异步检索某些数据,现在希望通过OnNotifyPropertyChanged事件通知Ui数据存在。

首先,您必须初始化DispatcherHelper。在Silverlight中,您可以在Application_Startup中执行此操作:

//initialize Dispatch helper
private void Application_Startup( object sender, StartupEventArgs e) {
    RootVisual = new MainPage();
    DispatcherHelper.Initialize(); 
}

在WPF中,初始化是在App类的静态构造函数中完成的:

static App() { 
    DispatcherHelper.Initialize();
}

然后在您的事件中,处理完asnc调用,使用以下代码在UI线程上调用RaisePropertyChanged

DispatcherHelper.CheckBeginInvokeOnUI(
    () => RaisePropertyChanged(PowerStatePropertyName)
);

DispatcherHelper.BeginInvokeOnUl需要Action,因此您只需使用

即可使用此处的任何代码
DispatcherHelper.CheckBeginInvokeOnUI(
    () => { /* complex code goes in here */ }
);

执行更复杂的任务。