我的应用程序是.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并导致问题时,我有另一个任务。
答案 0 :(得分:1)
您应该将UnobservedTaskExceptionEventArgs.Observed
设置为true。在这一点上观察结果没有任何效果,尽管人们可能有理由相信它会这样做。
答案 1 :(得分:0)
经过一些调试后,我发现当我没有调用.Result并导致问题时,我有另一个任务。