.NET应用程序在未进入AppDomain的情况下终止。未处理的异常

.NET应用程序在未进入AppDomain的情况下终止。未处理的异常,.net,exception-handling,.net,Exception Handling,我有一个应用程序,它有时会意外终止,尽管存在用于 AppDomain.CurrentDomain.UnhandledException、Application.Current.DispatcherUnhandledException、TaskScheduler.UnobservedTaskException事件 这是一个WPF应用程序,包含许多p/Invoke互操作代码。 我已经为所有“最后手段”事件创建了“安全网”(见上文)。但应用程序仍然失败,标准Windows错误对话框缺少所有我的处理程序

我有一个应用程序,它有时会意外终止,尽管存在用于 AppDomain.CurrentDomain.UnhandledException、Application.Current.DispatcherUnhandledException、TaskScheduler.UnobservedTaskException事件

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

.net应用程序终止和避免AppDomain.CurrentDomain.UnhandledException的原因是什么


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

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

仅供参考,如果子线程中发生异常,它将不会冒泡,您必须在该线程中处理。@Sergey:但是未处理的异常应该被触发,但首先我需要检测应用程序终止的位置,哪个库/组件导致它终止。但在默认的Windows错误对话框中,这是不可能的:(CLR不能神奇地将其逻辑注入本机代码,但如果该代码导致主AppDomain卸载,为什么CLR不能始终触发未经处理的异常事件?是的,但这种情况发生在离我很远的客户端。终止应用程序的不是CLR,而是操作系统。没有卸载AppDomain,它是头部中枪。很明显真的,我帮不了你买机票。你真的需要那些编写错误代码的人的帮助。