MVVM light Messenger Helper-Klasse

Veröffentlicht von

Für verschiedene Szenarien, in denen ich den MVVMlight Messenger nutze, habe ich mir eine kleine Helferklasse geschrieben.

Diese erlaubt je nach Situation Nachrichten asynchron zu verschicken, wahlweise mit GUI-Zugriff oder auch ohne. Vor der Nutzung des Dispatchers muss dieser einmal initialisiert werden, z.B. beim Start der Anwendung in der App.xml.cs:

DispatcherHelper.Initialize();

Der Code

/// <summary>
/// Helper class for the MVVM light messenger
/// </summary>
public class MessengerHelper
{
    /// <summary>
    /// Send an async message with UI invocation
    /// </summary>
    /// <param name="msg"></param>
    public static async void SendMessageInvokeUiAsync<T>(T msg)
    {
        await Task.Factory.StartNew(() =>
        {
            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                Messenger.Default.Send(msg);
            });
        });
    }

    /// <summary>
    /// Send an message async
    /// </summary>
    /// <param name="msg"></param>
    public static async void SendMessageAsync<T>(T msg)
    {
        await Task.Factory.StartNew(() =>
        {
            DispatcherHelper.CheckBeginInvokeOnUI(() =>
            {
                Messenger.Default.Send(msg);
            });
        });
    }

    /// <summary>
    /// Send an synchronous message
    /// </summary>
    /// <param name="msg"></param>
    public static void SendMessage<T>(T msg)
    {
        Messenger.Default.Send(msg);
    }
}

Anschließend kann die Klasse leicht verwendet werden.

MessengerHelper.SendMessageInvokeUiAsync(msg);

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.