当我怀疑Task
的{{1}}失败时,我常常只是等待Action
最终被抛出,所以我可以挖掘AggregateException
。然而,最近我注意到,通过尝试调整已启动失败InnerException
的表单,我可以强制显示错误。
两个问题:
Task
并在重新throw
技术上设置一个断点。”throw
被抛出。这是真的吗?AggregateException
?答案 0 :(得分:1)
有更好的方法吗?
您可以使用Result
属性或Wait()
功能。两者都阻止,如果Task
失败,他们会抛出AggregateException
。如果您想对例外做一些事情,另一个选择是ContinueWith()
与TaskContinuationOptions.OnlyOnFaulted
一起使用。
我认为当Task对象本身被垃圾收集时抛出了AggregateException。这是真的吗?
是的,如果未以任何方式访问Exception
的{{1}},它将在.Net 4.0上最终确定时抛出异常。 (.Net 4.5更改,Task
最终确定后,Task
的未处理异常不再抛出。)
根据#2的回答:为什么调整大小会立即触发
Task
?
最有可能的原因是它会创建一些对象,导致垃圾收集运行。