2011-09-13 14 views
6

Estoy tratando de averiguar cómo puedo usar DispatcherHelperftom MVVM light toolkit en SL, pero no puedo encontrar ningún ejemplo.Ejemplo simple de DispatcherHelper

Desde la página principal de este marco sé que

clase DispatcherHelper, una clase de peso ligero que le ayuda a crear aplicaciones multiproceso.

Pero no sé cómo usarlo.

¿Cómo y para qué puedo usarlo?

Respuesta

17

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.