1

我的应用程序是 .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);
}

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

4

2 回答 2

1

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

于 2013-01-24T12:35:32.370 回答
0

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

于 2013-01-28T11:11:41.323 回答