Итак, при использовании задач без async/await можно обращаться к свойствам IsCompleted или Status, чтобы спросить: «Мы уже приехали?» И, так же как при поездке в машине, не стоит спрашивать слишком часто. Другой вариант — использовать ContinueWith, чтобы задача сообщила вам, когда она завершится («Разбуди меня, когда приедем»). Наконец, можно вызвать Wait или обратиться к Result, чтобы сделать задачу синхронной, но это неэффективно и опасно, потому что такой вызов блокирует поток до завершения задачи (вызов Wait или обращение к Result после завершения задачи совершенно безопасны и эффективны, потому что результат уже доступен и в блокировке нет необходимости).
C# Concurrency. Асинхронное программирование и многопоточность
·
Нир Добовицки