假设我有三个任务,a
,b
和c
。这三个都保证在 1 到 5 秒之间的随机时间抛出异常。然后我编写以下代码:
await Task.WhenAny(a, b, c);
这最终会从首先出现的任务故障中引发异常。因为这里没有try...catch
,所以这个异常会冒泡到我的代码中的其他地方。
当剩下的两个任务抛出异常时会发生什么?这些未观察到的异常,不就是会导致整个进程被杀死吗?这是否意味着唯一的使用方法WhenAny
是在一个try...catch
块内,然后在继续之前以某种方式观察剩余的两个任务?
跟进:我希望答案适用于带有异步目标包的.NET 4.5和TaskEx.WhenAny
.NET 4.0(尽管在这种情况下显然使用)。