【发布时间】:2019-10-30 13:43:14
【问题描述】:
我可能遗漏了一个非常明显的事实,但我很难理解对 AggregatedExceptions 的需求。
我知道,自从 async/await 之后,我们就不必再为 AggregatedExceptions 烦恼了(或者至少不那么频繁地遇到它们了)。我可以理解这一点,因为我只是启动一个任务,有时我选择将“调用线程”与“并行运行的任务”同步
var sometTask = DoSomethingInParallelAsync().ConfigureAwait(false);
...
...
await someTask;
在这种情况下,DoSomethingInParallelAsync() 中发生的异常将在我等待该调用时显示给我。
为什么不使用await,而在Task 上显式使用Wait, 会如此不同?
var someTask = DoSomethingInParallelAsync();
...
...
someTask.Wait();
本例中抛出的异常,总是将抛出的Exception 包裹在AggregateException 中。我还是不明白为什么。
在使用 async/await 时我不能做什么,这消除了对 AggregateExceptions 的需求?
【问题讨论】:
-
嗨@Sean,感谢您的链接。不过还是很疑惑。在下面给出的示例中,我了解多个异常可能同时发生在不同的线程/任务上。但在我的问题中,我只是启动 1 个任务,然后等待它。这不会在
Task.Wait调用上产生多个异常。那为什么还包裹在AggregateException中呢? -
不确定我是否清楚。我会理解
Task.WhenAll会抛出一个AggregateException,我不明白为什么Task.Wait会抛出一个AggregateException
标签: c# aggregateexception