Pregunta

¿Hay algún ejemplo sobre cómo usar la porción de subproceso de la luz MVVM? ¿Cuál es la ventaja de usar el mvvmlight.phreading sobre el enhebrado de .NET normal?

¿Fue útil?

Solución

Parece que toda la porción de subprocesos 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. Use DispatcherHelper.initialize () de acuerdo con el comentario en el constructor de aplicaciones estáticas (WPF) o el controlador de eventos Aplication_Startup (Silverlight), y luego puede usar despachador.

Saludos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top