2011-09-13 7 views
6

Sto cercando di capire come utilizzare DispatcherHelperftom MVVM light toolkit in SL, ma non riesco a trovare alcun esempio.Esempio semplice di DispatcherHelper

Dalla home page di questo quadro so che

classe DispatcherHelper, una classe leggero per aiutarvi a creare applicazioni multithreaded.

Ma non so come usarlo.

Come e per cosa posso usarlo?

risposta

17

È necessario solo il DispatcherHelper quando si desidera apportare modifiche ai componenti sul proprio thread dell'interfaccia utente, dal codice che viene eseguito su un thread diverso. Per esempio. in un'applicazione Silverlight si chiama un servizio Web per recuperare alcuni dati in modo asincrono e ora si desidera informare l'interfaccia utente che i dati siano presenti tramite un evento OnNotifyPropertyChanged.

Per prima cosa è necessario inizializzare lo DispatcherHelper. In Silverlight fate questo in Application_Startup:

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

In WPF l'inizializzazione è fatto nel costruttore statico di voi classe App:

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

Poi, nel tuo caso, la manipolazione il completamento della chiamata ASnc, utilizzare il seguente codice per chiamare RaisePropertyChanged sul thread UI:

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

DispatcherHelper.BeginInvokeOnUl aspetta un Action così y Puoi usare qualsiasi codice qui solo per utilizzare

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

per eseguire attività più complesse.