¿Hay algún ejemplo sobre cómo usar la porción Threading de MVVM Light? ¿Cuál es la ventaja de usar MVVMLight.threading sobre el enhebrado normal de .NET?MVVM Light Threading Ejemplo
5
A
Respuesta
3
se parece a todas parte con hilo en mvvmlight es esta clase:
public static class DispatcherHelper
{
public static Dispatcher UIDispatcher
{
get;
private set;
}
/// <summary>
/// Executes an action on the UI thread. If this method is called
/// from the UI thread, the action is executed immendiately. If the
/// method is called from another thread, the action will be enqueued
/// on the UI thread's dispatcher and executed asynchronously.
/// <para>For additional operations on the UI thread, you can get a
/// reference to the UI thread's dispatcher thanks to the property
/// <see cref="UIDispatcher" /></para>.
/// </summary>
/// <param name="action">The action that will be executed on the UI
/// thread.</param>
public static void CheckBeginInvokeOnUI(Action action)
{
if (UIDispatcher.CheckAccess())
{
action();
}
else
{
UIDispatcher.BeginInvoke(action);
}
}
/// <summary>
/// This method should be called once on the UI thread to ensure that
/// the <see cref="UIDispatcher" /> property is initialized.
/// <para>In a Silverlight application, call this method in the
/// Application_Startup event handler, after the MainPage is constructed.</para>
/// <para>In WPF, call this method on the static App() constructor.</para>
/// </summary>
public static void Initialize()
{
if (UIDispatcher != null)
{
return;
}
// for silverlight
UIDispatcher = Deployment.Current.Dispatcher;
// wpf
//IDispatcher = Dispatcher.CurrentDispatcher;
}
}
}
y eso es todo. Utilice DispatcherHelper.Initialize() de acuerdo a comentar en la App constructor estático (WPF) o controlador de eventos Application_Startup (Silverlight) - y entonces u puede utilizar DispatcherHelper.CheckBeginInvokeOnUI (acción Acción)
Saludos
Cuestiones relacionadas
- 1. Buscando el ejemplo simple de MVVM Light
- 2. mvvm light - mensajes
- 3. MVVM Light + Unity or Prism?
- 4. Muestras de MVVM Light Toolkit
- 5. ¿MVVM Light SimpleIoC admite singletons?
- 6. MVVM Light - Multiple ViewModels (y los conecta)
- 7. MVVM Light - Vistas y cuadros de diálogo
- 8. MVVM Light Toolkit - RelayCommands, DelegateCommands, y ObservableObjects
- 9. Forma correcta de usar MVVM Light Messenger
- 10. Mostrar diálogo con MVVM Light toolkit
- 11. ¿Dónde está la documentación de MVVM Light?
- 12. Cómo usar MVVM-Light con tokens?
- 13. Silverlight Navigation usando Mvvm-light (oobe) + MEF?
- 14. MVVM-light + Mejores prácticas de RIA Services
- 15. Implementación de MVVM Light toolkit WPF Unity
- 16. MVVM Light Relay Parámetros de comando
- 17. Cuándo desechar ViewModel en MVVM Light
- 18. ¿Necesito un controlador de vista para MVVM-light en Silverlight?
- 19. MVVM Light Tipos de mensajes: ¿Cuándo usar cada tipo?
- 20. Ejemplo de diálogo WPF MVVM
- 21. Combinación de MVVM Light Toolkit y Unity 2.0
- 22. Mvvm-Light Silverlight, usando EventToCommand con un Combobox
- 23. Cómo abrir una nueva ventana usando MVVM Light Toolkit
- 24. Cómo utilizar RelayCommand con el marco de MVVM Light
- 25. MVVM Light toolkit - mantenido? ¿Hoy aquí, mañana ya no?
- 26. WPF y MVVM: ¿Algún ejemplo usando VB.Net?
- 27. usando MVVM light messenger con Silverlight 4 ChildWindow clase de diálogo
- 28. Ejemplo simple de DispatcherHelper
- 29. ¿Cuál es la convención estándar para definir la vista anidada: mapeo de viewmodel en MVVM Light
- 30. MVVM Light-=> Paso de Comando de parámetros y EventArgs para comandar
Gracias agenda de discusión. ¿Qué tal si se compara con el enhebrado .net normal y se puede usar en los viewmodels? –
1. primero u inicializa la clase DispatcherHelper invocando el método Initialize() - y debes hacerlo en el hilo ui para que pueda recordar/establecer su referencia privada al despachador – agend
2. después de eso puedes usar DispatcherHelper.CheckBeginInvokeOnUI (Acción) - desde cualquier lugar que desee - view, model, viewmodel - siempre usará el subproceso ui para invocar su acción 3. acerca de la comparación de subprocesamiento .NET normal - normalmente tendría que hacer estas cosas por su cuenta: mantener la referencia a la interfaz de usuario despachador, compruebe que está en el hilo de ui, y finalmente llame a dispatcher.BeginInvoke (acción) - con esta clase es más fácil – agend