Задать вопрос
@Mayhem924

В чем роль Task.Run() и await в асинхронных методах?

Доброго дня!
Только начал подробно знакомиться с асинхронными вызовами в C# и не все моменты кристально понятны

Например есть такой код, в чем будет различие 2 вызовов Thread.Sleep()?
Порядок вывода сообщений идентичен в обоих вариантах
Пример 1
607cdc96c6263292542966.png


И второй пример такой, показан вариант правильной обработки ошибок с использованием локальной функции
Вопрос, почему в этом примере вызов DoProcessing() без await? Опечатка книги?
Ведь в этом случае у меня сообщение Completed идет перед Work done!, и почему в этом случае не спасает await у Task.Run()
Пример 2
607cdee747bca221026032.png
  • Вопрос задан
  • 204 просмотра
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
1.Task.Run нужен для запуска синхронных методов в тредпуле.
2. Thread.Sleep использовать не рекомендуется, тк есть Task.Delay

Второй пример действительно похож на опечатку.
Оба примера плохие: Например если в первом методе убрать await Task.Run, то Thread.Sleep займёт вызывающий поток

Читайте TAP.docx
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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