最佳答案
在这个代码中:
private async void button1_Click(object sender, EventArgs e) {
try {
await Task.WhenAll(DoLongThingAsyncEx1(), DoLongThingAsyncEx2());
}
catch (Exception ex) {
// Expect AggregateException, but got InvalidTimeZoneException
}
}
Task DoLongThingAsyncEx1() {
return Task.Run(() => { throw new InvalidTimeZoneException(); });
}
Task DoLongThingAsyncEx2() {
return Task.Run(() => { throw new InvalidOperation();});
}
我期望 WhenAll
创建并抛出一个 AggregateException
,因为它正在等待的任务中至少有一个抛出了异常。相反,我将获得由其中一个任务引发的单个异常。
WhenAll
不总是创建一个 AggregateException
吗?