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