DispatcherHelper的简单示例

7
我正在尝试弄清楚如何在Silverlight中使用MVVM light toolkit中的DispatcherHelper,但是我找不到任何示例。
从这个框架的主页上我知道:
DispatcherHelper类是一个轻量级的类,可以帮助你创建多线程应用程序。
但我不知道如何使用它。
我可以如何以及用于什么目的使用它?
1个回答

19

当你需要在代码运行在不同线程时,对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();
}

然后,在处理异步调用完成的事件时,使用以下代码在 UI 线程上调用 RaisePropertyChanged

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

DispatcherHelper.BeginInvokeOnUI期望一个Action,所以你可以在这里使用任何代码,只需使用

DispatcherHelper.CheckBeginInvokeOnUI(
    () => { /* complex code goes in here */ }
);

执行更复杂的任务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接