0

阿尔巴哈里说——</p>

静态 TaskScheduler.UnobservedTaskException 事件为处理未处理的任务异常提供了最后的最后手段。通过处理此事件,您可以拦截否则会结束应用程序的任务异常,并提供您自己的逻辑来处理它们。

参考: http ://www.albahari.com/threading/part5.aspx

@ReedCoopsey说——</p>

请注意,在任何情况下,UnobservedTaskException 都不会阻止应用程序关闭 - 您需要在任务内部处理异常,或者始终等待任务,如果您想阻止它关闭应用程序。

参考: TaskScheduler.UnobservedTaskException 永远不会被调用


我阅读了 Albahari 并注册了 UnObservedTaskException,当出现未处理的异常时,我的应用程序随之崩溃。我不确定我在理解这两位线程专家时是否犯了任何错误。有人可以告诉我,如果只听 UnObservedTaskException 事件并设置观察到的异常就可以确保应用程序不会关闭?我明白这应该是处理异常的最后手段,应该使用 try/catch 块或等待。

4

1 回答 1

3

根据MSDN,此事件的 EventArgs 有一个SetObserved()方法:

将异常标记为“已观察”,从而防止它触发异常升级策略,默认情况下,该策略会终止进程。

所以你的两个来源都是正确的,在处理事件时,你有非默认选项来保持活力。

于 2012-05-31T07:17:14.740 回答