Warten auf das Auslösen eines EventHandler-Ereignisses

Manchmal wird das Ereignismuster verwendet, um Ereignisse in MVVM-Anwendungen durch ein untergeordnetes Ansichtsmodell auszulösen, um auf locker gekoppelte Weise eine Nachricht an das übergeordnete Ansichtsmodell zu senden.

Übergeordnetes ViewModel

searchWidgetViewModel.SearchRequest += (s,e) => 
{
    SearchOrders(searchWidgitViewModel.SearchCriteria);
};

SearchWidget ViewModel

public event EventHandler SearchRequest;

SearchCommand = new RelayCommand(() => {

    IsSearching = true;
    if (SearchRequest != null) 
    {
        SearchRequest(this, EventArgs.Empty);
    }
    IsSearching = false;
});

Beim Refactoring meiner Anwendung für .NET4.5 stelle ich so viel Code wie möglich zur Verfügungasync undawait. Allerdings funktioniert das Folgende nicht (nun, ich hatte es wirklich nicht erwartet)

 await SearchRequest(this, EventArgs.Empty);

Das Framework tut dies definitiv, um Event-Handler aufzurufenwie dieses, aber ich bin nicht sicher, wie es geht?

private async void button1_Click(object sender, RoutedEventArgs e)
{
   textBlock1.Text = "Click Started";
   await DoWork();
   textBlock2.Text = "Click Finished";
}

Alles, was ich zum Thema asynchrone Ereignisse gefunden habeist uralt aber ich kann nicht etwas im Rahmen finden, um dies zu unterstützen.

Wie kann ichawait der Aufruf eines Ereignisses bleibt aber auf dem UI-Thread.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage