Task.WhenAny и ненаблюдаемые исключения
Допустим, у меня есть три задачи,a
, b
, а такжеc
, Все три гарантированно генерируют исключение в случайное время от 1 до 5 секунд. Затем я пишу следующий код:
await Task.WhenAny(a, b, c);
В конечном итоге это приведет к исключению из любых ошибок задачи. Так как нетtry...catch
здесь, это исключение будет всплывать в каком-то другом месте в моем коде.
Что происходит, когда оставшиеся две задачи выдают исключение? Не являются ли эти ненаблюдаемые исключения, которые приведут к уничтожению всего процесса? Означает ли это, что единственный способ использоватьWhenAny
находится внутриtry...catch
заблокировать, а потом как-то наблюдать оставшиеся две задачи, прежде чем продолжить?
Follow-up: Мне бы хотелось, чтобы ответ был применим к .NET 4.5and .NET 4.0 с Async Targeting Pack (хотя явно используетсяTaskEx.WhenAny
в таком случае).