我遇到了Task
,我用ContinueWith
就有问题。在回调中,当第一个任务出现故障时,我没有观察/处理Exception
。我发现在这种情况下,这里发生了什么:
Proper way to use .ContinueWith for Tasks谁默认等待任务?
请记住,如果你自己延续不遵守 例外,是谁在这个总体工作流程等待 完整的人是怎么回事成为一个观察它的人。
这让我纳闷:
谁是不是等待一个Task
的服务员?
谁默认等待Task
?
例如:
public int HowOldAmI()
{
Task t = Task.Run(async() => {
await Task.Delay(5000);
throw new Exception("Something happened");
});
return 42;
}
在这种情况下,谁是等待的Task
?
没有什么,在情况下,你已经证明。没有“隐含地”等待任务完成 - 如果您选择创建任务而不等待它,则任何异常都会转到未查看的异常处理程序。 –
好的,谢谢@JonSkeet。 _unobserved异常处理程序_记录在某处?我问的原因是我的崩溃报告库正在捕获这些异常,虽然没有真正的崩溃发生,所以我试图正确处理异常,以便它们不会出现在我的崩溃报告中。 –
请参阅Andrew的答案... –