我有一个应用程序有时会意外终止,尽管存在处理程序 AppDomain.CurrentDomain.UnhandledException,Application.Current.DispatcherUnhandledException,TaskScheduler.UnobservedTaskException事件。
这是一个包含许多P / Invoke互操作代码的WPF应用程序。 我已经为所有“最后的”事件创建了“安全网”,并提供了处理程序(见上文)。但是应用程序仍然失败,标准的Windows错误对话框丢失了我的所有处理程序。
.net app终止和避免AppDomain.CurrentDomain.UnhandledException会导致什么原因?
非托管线程中的异常可以是这样的原因吗?如果是这样我该怎么办?
答案 0 :(得分:1)
当代码本身不处理它时,CLR无法将未处理的异常处理神奇地注入到本机的pinvoked代码中。特别是CLR不知道的线程中的任何类型的硬件异常(如AccessViolation)都会在没有诊断的情况下终止应用程序。您需要与该代码的所有者或作者合作,以提高该代码的可靠性和可维护性。