Question

Y a-t-il des exemples sur la façon d'utiliser la partie Threading de MVVM Light? Quel est l'avantage d'utiliser le MVVMLight.threading sur le filetage normale .net?

Était-ce utile?

La solution

ressemble tout partie de filetage dans mvvmlight est cette classe:

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;

    }
}

}

et voilà tout. Utilisation DispatcherHelper.Initialize () en fonction de commentaire dans le constructeur App statique (WPF) ou gestionnaire d'événement Application_Startup (Silverlight) - et u peut utiliser DispatcherHelper.CheckBeginInvokeOnUI (action Action)

Cordialement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top