Solo necesita el DispatcherHelper
cuando desee realizar cambios en los componentes en su subproceso de interfaz de usuario, desde el código que se ejecuta en un subproceso diferente. P.ej. en una aplicación de Silverlight llama a un servicio web para recuperar algunos datos de forma sincronizada, y ahora desea informar al Ui que los datos están presentes a través de un evento OnNotifyPropertyChanged
.
Primero debe inicializar el DispatcherHelper
. En Silverlight hacer esto en Application_Startup
:
//initialize Dispatch helper
private void Application_Startup(object sender, StartupEventArgs e) {
RootVisual = new MainPage();
DispatcherHelper.Initialize();
}
en WPF la inicialización se realiza en el constructor estático de que clase de aplicaciones:
static App() {
DispatcherHelper.Initialize();
}
Luego, en su caso, el manejo de la finalización de la llamada ASNC, utilizar el siguiente código para llamar RaisePropertyChanged
en el subproceso de interfaz de usuario:
DispatcherHelper.CheckBeginInvokeOnUI(
() => RaisePropertyChanged(PowerStatePropertyName)
);
DispatcherHelper.BeginInvokeOnUl
espera un Action
así y Puede usar cualquier código aquí solo use
DispatcherHelper.CheckBeginInvokeOnUI(
() => { /* complex code goes in here */ }
);
para realizar tareas más complejas.