Как «ждать» поднятия события EventHandler

Иногда шаблон событий используется для вызова событий в приложениях MVVM или дочерней viewmodel, чтобы отправить сообщение своей родительской viewmodel в слабосвязанном виде, как это.

Родительская 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;
});

При рефакторинге моего приложения для .NET4.5 я стараюсь использовать как можно больше кодаasync а такжеawait, Однако следующее не делаетне работает (ну, я действительно не былне ожидаю этого)

 await SearchRequest(this, EventArgs.Empty);

Фреймворк определенно делает это для вызова обработчиков событийтакой как этот, но я'Я не уверен, как это происходит?

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

Все, что ямы обнаружили асинхронно возникшие событияявляется древний Но я могу'не могу найти что-то в рамках, чтобы поддержать это.

Как я могуawait вызов события, но остается в потоке пользовательского интерфейса.

Ответы на вопрос(3)

Ваш ответ на вопрос