1

我知道UnobservedTaskException当终结器在对象上运行时,我可以处理以防止任何未观察到的异常终止我的应用程序。

但是,我不确定应该在何时何地为该事件设置处理程序。类中事件本身的 XML 文档TaskScheduler说:

/// This AppDomain-wide event provides a mechanism to prevent exception
/// escalation policy (which, by default, terminates the process) from triggering.
/// Each handler is passed a <see cref="T:System.Threading.Tasks.UnobservedTaskExceptionEventArgs"/> 
/// instance, which may be used to examine the exception and to mark it as observed.

这是否意味着我在整个 AppDomain 中只需要一个处理程序?并且所有未观察到的任务异常都将由它处理?

或者我是否需要每个程序集/每个类都有一个处理程序,并且只有来自该程序集/类中任务的未观察到的异常才会转到该处理程序?

4

1 回答 1

2

每个应用程序域就是全部。这是一个类的静态事件Task,您应该确保在逻辑应用程序启动时挂钩。因此,对于控制台应用程序,只需在开始任何其他工作之前将其挂接到 Main。对于 ASP.NET 应用程序,只需将其挂接到 Global.asax Application_Start。对于 Windows 服务,在 OnStart 中。

于 2012-02-24T16:59:42.000 回答