2011-09-13 88 views
6

我想弄清楚如何在SL中使用DispatcherHelperftom MVVM light toolkit,但我找不到任何示例。DispatcherHelper的簡單示例

從這個框架的主頁我知道

DispatcherHelper類,一個輕量級的類幫助您創建 多線程應用程序。

但我不知道如何使用它。

如何和我可以使用它?

回答

17

您只需要DispatcherHelper,當您想要更改UI線程上的組​​件時,可以使用不同線程上運行的代碼。例如。在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調用完成,使用下面的代碼來調用RaisePropertyChanged在UI線程上:

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

DispatcherHelper.BeginInvokeOnUl期待一個Action桑尼你可以使用這裏的任何代碼只需使用

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

做更復雜的任務。