Dispatcher.BeginInvoke() без ожидания все еще выполняется асинхронно?C#

Место общения программистов C#
Anonymous
Dispatcher.BeginInvoke() без ожидания все еще выполняется асинхронно?

Сообщение Anonymous »

Мне трудно понять связь между асинхронными методами диспетчера и async/await.

В моем случае у меня есть обработчик событий, который выполняет операцию на диспетчере:

Код: Выделить всё

 private void OnEventOccurred(object sender, EventArgs e)
{
someControl.Dispatcher.BeginInvoke(DispatcherPriority.Background, SomeLongRunningOperation());
}
Это не должно блокировать поток пользовательского интерфейса, верно? По крайней мере, в нашем приложении так кажется. В чем разница с версией с async/await?

Код: Выделить всё

 private async void OnEventOccurred(object sender, EventArgs e)
{
await someControl.Dispatcher.BeginInvoke(DispatcherPriority.Background, SomeLongRunningOperation());
}
Это также работает и, похоже, не влияет на скорость реагирования пользовательского интерфейса.

Подробнее здесь: https://stackoverflow.com/questions/525 ... ynchronous

Вернуться в «C#»