2011-09-13 40 views
6

私はDispatcherHelperftom MVVM light toolkitをSLでどのように使用することができるかを調べようとしていますが、私は例を見つけることができません。私はDispatcherHelperの簡単な例

DispatcherHelperクラス、軽量クラスは マルチスレッド・アプリケーションを作成するためにあなたを助けていることを知っているこのフレームワークのホームページから

しかし、私はそれを使用する方法がわかりません。

どのように使用できますか?

答えて

17

UIスレッドのコンポーネントを別のスレッドで実行するコードから変更する場合は、DispatcherHelperが必要です。例えば。 Silverlightアプリケーションでは、一部のデータを非同期に取得するためにWebサービスを呼び出し、今度はOnNotifyPropertyChangedイベントを介してデータが存在することをUiに通知します。

まず、DispatcherHelperを初期化する必要があります。 Silverlightのでは、Application_Startupで次の操作を行います。

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

初期化は、あなたのAppクラスの静的コンストラクタで行われます。

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

次に、あなたの場合には、お使いのasncコールの完了を処理し、 UIスレッドでRaisePropertyChangedを呼び出すために、次のコードを使用:

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

DispatcherHelper.BeginInvokeOnUlそうY Action期待ここでは任意のコードを使用できます。より複雑な作業を行うには、

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

を使用してください。