我已经 Hook 了这两个,但有时我的应用程序仍然崩溃,只是抛出 Windows“发生异常”对话框。当我单击“确定”时,应用程序就会退出。在什么情况下这两个处理程序(在 WPF 应用程序中)不会捕获异常?
我应该提到我正在做一堆 COM 互操作,所以这总是值得怀疑的:-)
最佳答案
有几个原因可以解释为什么其中任何一个都不会引发未处理的异常。
仅当通过 Invoke 或 BeginInvoke 调用 ( documentation ) 输入方法的调度程序外观中发生异常时,才会引发 Dispatcher.UnhandledException
。因此,未以这种方式调用的其他线程或方法上的异常将错过此事件处理程序。
.Net 还在 4.0 中对进入 AppDomain.UnhandledException
事件的异常进行了更改。访问冲突和堆栈溢出等损坏的状态异常不再通过此事件。
我不确定其中任何一个是否与您相关。最简单的检查方法是附加一个调试器并查看它产生什么输出。
关于.net - DispatcherUnhandledException 和 AppDomain.UnhandledException 何时不足(WPF 应用程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3576974/