我正在试图弄清楚如何在SL中使用DispatcherHelperftom MVVM light toolkit,但我找不到任何示例。
从这个框架的主页我知道
DispatcherHelper类,一个帮助您创建的轻量级类 多线程应用程序。
但我不知道如何使用它。
我如何以及如何使用它?
答案 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 */ }
);
执行更复杂的任务。