Task.WhenAny и ненаблюдаемые исключения
Позволять'скажем, у меня есть три задачи,a
b
, а также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
в таком случае).