Task.WhenAny и ненаблюдаемые исключения

Позволять'скажем, у меня есть три задачи,ab, а такжеc, Все три гарантированно генерируют исключение в случайное время от 1 до 5 секунд. Затем я пишу следующий код:

await Task.WhenAny(a, b, c);

В конечном итоге это приведет к исключению из любых ошибок задачи. С тех пор'нет нетtry...catch здесь, это исключение будет всплывать в каком-то другом месте в моем коде.

Что происходит, когда оставшиеся две задачи выдают исключение? Арен»t эти ненаблюдаемые исключения, которые приведут к уничтожению всего процесса? Означает ли это, что единственный способ использоватьWhenAny находится внутриtry...catch заблокировать, а потом как-то наблюдать оставшиеся две задачи, прежде чем продолжить?

Продолжение: яМне нравится ответ, чтобы применить оба к .NET 4.5а также .NET 4.0 с Async Targeting Pack (хотя явно используетсяTaskEx.WhenAny в таком случае).

Ответы на вопрос(2)

Ваш ответ на вопрос