Задать вопрос
@sergeevpetro
Junior Developer

Async-await и Task.wait() В чем разница?

Доброго времени суток!
Как понял и await ожидает завершения операции и wait() занимается тем же самым.

Так в чем разница? Зачем await если есть wait()? Зачем wait() если есть await?

Понятным языком объясните пожалуйста)
  • Вопрос задан
  • 8016 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@carbon88
.NET developer/ORM developer
Task.Wait() будет блокировать вызывающий поток, а await не будет этого делать.
Так называемый continuation (то что ниже await) будет выполнен после завершения таска, что ожидается через await. При этом вызывающий поток блокироваться не будет и сможет выполнить еще какую-то работу, например, среагировать на нажатие кнопки если это основной поток GUI приложения или если это асп.нет приложение он сможет начать обрабатывать следующий запрос.
Как только таск выполнится начнется исполнение continuation и в некоторых случаях не гарантируется что это будет тот же поток в котором выполнялся код до await.
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
Wait это старое. async\await это лишь синтаксический сахар. При использовании async\await все исключения пробрасываются в вызывающий поток, и вы можете все обернуть в try/catch, естественно читаемость кода и тд. Вот хорошая статья https://habrahabr.ru/post/260217/ и как вариант есть книга Асинхронное программирование в C# 5.0 Алекса Дэвиса.
Ответ написан
Прочитайте разницу между асинхнонностью (async\await) и многопоточностью (Task.wait())
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы