@Mayhem924

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

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

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


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

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

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

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

Войти через центр авторизации
Похожие вопросы