È 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.