2016-09-03 5 views
0

Ich habe Schwierigkeiten, IDialogService zu implementieren, der in der GalaSoft.MvvmLight-Assembly definiert ist. Sie können MvvmLightLibsSo implementieren Sie IDialogService

public interface IDialogService 
{ 

    Task ShowError(string message, string title, string buttonText, Action afterHideCallback); 
    Task ShowError(Exception error, string title, string buttonText, Action afterHideCallback); 
    Task ShowMessage(string message, string title); 
    Task ShowMessage(string message, string title, string buttonText, Action afterHideCallback); 
    Task<bool> ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action<bool> afterHideCallback); 
    Task ShowMessageBox(string message, string title); 
} 

, dass aus dem nuget Paket erhalten Ich versuche, die erste Methode zu implementieren, wie so

public Task ShowError(Exception error, string title, string buttonText, Action afterHideCallback) 
    { 
     //var result = MessageBox.Show(""); 
     return Dispatcher.Invoke(() => MessageBox.Show("whatever")); 
     //return Dispatcher.BeginInvoke(delegate() { MessageBox.Show("your stuff"); }); 
     //var dg = new Action(() => { MessageBox.Show("", ""); }); 
     //return Dispatcher.CurrentDispatcher.BeginInvoke(dg); 
    }  

Wie kann ich Messagebox.Show diese Asynchron-Methode für wpf? Bitte helfen Sie.

Ich versuche zu sehen, was funktioniert, aber bisher kein Glück. Kann mir bitte jemand helfen?

+0

Sie möchten ShowError als eine asynchrone Methode implementieren? – Joe

+0

Ja, MessageBo in einer asynchronen Methode – VivekDev

Antwort

3

Sie sagen, Sie wollen Error-Asynchron-sein, aber nicht wirklich markiert die Methode mit dem async Schlüsselwort, noch irgendetwas nicht erwarten:

public async Task ShowError(Exception error, string title, string buttonText, Action afterHideCallback) 
    { 
     await Dispatcher.InvokeAsync(() => MessageBox.Show("whatever")); 
     Console.WriteLine("awaited Box closed"); 
    } 

Beispiel:

private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
     await ShowError(new Exception("Test"), "test", "um", null); 
     Console.WriteLine("awaited showError"); 
    } 
Verwandte Themen