Jak „czekać” na podniesienie zdarzenia EventHandler

Czasami wzorzec zdarzeń jest używany do wywoływania zdarzeń w aplikacjach MVVM przez lub podrzędny model widoku, aby wysłać wiadomość do swojego macierzystego modelu widoku w sposób luźno powiązany.

Parent 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;
});

W refaktoryzacji mojej aplikacji dla .NET4.5 robię tyle, ile można użyć koduasync iawait. Jednak poniższe nie działa (cóż, naprawdę tego nie oczekiwałem)

 await SearchRequest(this, EventArgs.Empty);

Ramy zdecydowanie robią to, aby wywołać procedury obsługi zdarzeńtak jak to, ale nie jestem pewien, jak to robi?

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

Wszystko, co znalazłem na temat poruszania wydarzeń asynchroniczniejest starożytny ale nie mogę znaleźć niczego w ramach, aby to wesprzeć.

Jak mogęawait wywołanie zdarzenia, ale pozostanie w wątku interfejsu użytkownika.

questionAnswers(3)

yourAnswerToTheQuestion