Если задача завершилась с ошибкой, то самый простой способ обработать исключение, выброшенное внутри задачи, — вызвать метод Wait, помещенный внутри блока try-catch. Вызов Wait() после завершения задачи не несет никакой опасности и не блокирует поток (потому что ожидаемое событие уже произошло)
C# Concurrency. Асинхронное программирование и многопоточность
·
Нир Добовицки