2010-11-24 61 views
3

我有一个应用程序有时会意外终止,尽管存在处理程序 AppDomain.CurrentDomain.UnhandledException,Application.Current.DispatcherUnhandledException,TaskScheduler.UnobservedTaskException事件。.NET应用程序终止而不进入AppDomain.UnhandledException

这是一个带有许多P/Invoke互操作代码的WPF应用程序。 我已经为处理所有“最后的手段”事件创建了“安全网”(见上文)。但该应用仍然失败,标准的Windows错误对话框丢失了我的所有处理程序。

什么可能导致.net应用程序终止并避免AppDomain.CurrentDomain.UnhandledException?

非托管线程中的异常可以是这样的原因吗?如果是这样,我能用它做什么?

+1

只是一个FYI,如果在子线程中发生异常,它不会冒泡,你必须在该线程中处理它。 – 2010-11-24 16:28:30

+0

@Sergey:但UnhandledException应该触发 – Shrike 2010-11-24 17:06:40

回答

1

当代码本身没有处理它时,CLR不能神奇地将未处理的异常处理注入本地pinvoked代码。特别是CLR不知道的线程中的任何类型的硬件异常(如AccessViolation)都会在没有诊断的情况下终止应用程序。您需要与该代码的所有者或作者合作,以提高该代码的可靠性和可维护性。

相关问题