观察到的Task Exception调用TaskScheduler.UnobservedTaskException

时间:2013-01-24 11:55:44

标签: c# asynchronous task-parallel-library task

我的应用程序是.NET 4.5,我有一个事件处理程序,可记录未观察到的任务异常的所有错误。

TaskScheduler.UnobservedTaskException += (sender, e) => e.Exception.Handle(ex =>
{
    logger.Error(e.Exception);
    return false;
});

我返回false,关闭了应用程序。模拟.NET 4.0行为。

我的问题是,如果我观察结果,为什么这段代码会调用该事件并导致我的应用程序崩溃?

try
{
    var resultado = httpClient.GetAsync('http://.....').Result;
}
catch (Exception ex)
{
    logger.Error(ex);
}

UPDATE:经过一些调试后,我发现当我没有调用.Result并导致问题时,我有另一个任务。

2 个答案:

答案 0 :(得分:1)

您应该将UnobservedTaskExceptionEventArgs.Observed设置为true。在这一点上观察结果没有任何效果,尽管人们可能有理由相信它会这样做。

答案 1 :(得分:0)

经过一些调试后,我发现当我没有调用.Result并导致问题时,我有另一个任务。