2013-01-24 19 views
1

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

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:一些调试后,我弄清楚,我有另外的任务时,我didn't叫。结果,并导致该问题。

+1

您正在阅读的活动有误。这并不意味着“一个未被发现的任务的例外”,而是“未被发现的任务的例外”。 –

+0

我编辑了我的问题。我实际上是“获取”例外,登录。当我调用Result时,它应该同步抛出一个异常 –

+0

我冒昧地设置了一个更精确的标题。希望你不介意。 – usr

回答

0

经过一番调试之后,我发现当我没有打电话时,我有另一个任务。结果导致了问题。

1

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