【发布时间】:2013-01-28 19:12:38
【问题描述】:
我的应用程序是 .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 并导致问题时,我有另一个任务。
【问题讨论】:
-
你读错了事件。它不是指“未观察到的任务的异常”,而是“未观察到的任务异常”。
-
我编辑了我的问题。我实际上是“获取”异常,以记录。当我调用 Result 时,它应该同步抛出异常
-
我冒昧地设置了一个更精确的标题。希望你不要介意。
-
实际上问题不在于 TaskScheduler.UnobservedTaskException。因为我没有将异常设置为 Observed 那里。 TaskScheduler.UnobservedTaskException 永远不应该被调用
标签: c# asynchronous task-parallel-library task