Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net DispatcherUnhandledException和AppDomain.UnhandledException何时不足(WPF app)?_.net_Wpf_Unhandled Exception - Fatal编程技术网

.net DispatcherUnhandledException和AppDomain.UnhandledException何时不足(WPF app)?

.net DispatcherUnhandledException和AppDomain.UnhandledException何时不足(WPF app)?,.net,wpf,unhandled-exception,.net,Wpf,Unhandled Exception,我已经连接了这两个,但偶尔我的应用程序仍然会崩溃,并弹出Windows“发生异常”对话框。当我单击“确定”时,应用程序将退出。在什么情况下,这两个处理程序不会捕获异常(在WPF应用程序中) 我应该提到的是,我正在进行一系列COM互操作,所以这总是令人怀疑:-)有两个原因可以解释为什么这两种方法都不会引发未处理的异常 Dispatcher.UnhandledException仅针对通过Invoke或BeginInvoke调用()输入方法的Dispatcher外观中发生的异常而引发。因此,未以这种方

我已经连接了这两个,但偶尔我的应用程序仍然会崩溃,并弹出Windows“发生异常”对话框。当我单击“确定”时,应用程序将退出。在什么情况下,这两个处理程序不会捕获异常(在WPF应用程序中)


我应该提到的是,我正在进行一系列COM互操作,所以这总是令人怀疑:-)

有两个原因可以解释为什么这两种方法都不会引发未处理的异常

Dispatcher.UnhandledException
仅针对通过Invoke或BeginInvoke调用()输入方法的Dispatcher外观中发生的异常而引发。因此,未以这种方式调用的其他线程或方法上的异常将错过此事件处理程序

.Net还在4.0中更改了哪些异常将进入
AppDomain.UnhandledException
事件。损坏的状态异常(如访问冲突和堆栈溢出)不再通过此事件


我不确定这两者是否与你有关。最简单的检查方法就是附加一个调试器,看看它产生了什么输出。

在.NET中有不可修补的异常。这些是CLR在进入其认为完全不可恢复的状态时直接抛出的异常。一个例子是StackOverflowException。微软的理念是,这种状态不是一种可能的异常情况,它一定是代码中的一个bug,因此不应该被处理。在这种情况下,异常会立即传播到应用程序关闭错误消息。

谢谢Jared和Martin。然而。。。现在附加了一个调试器来查看有问题的异常是什么,我很困惑:它只是一个COMException。异常发生在我创建的后台线程上,因此我不希望调用WPF DispatcherUnhandledException处理程序,但我希望启动AppDomain.UnhandledException。你知道为什么COMException不会最终调用AppDomain.UnhandledException吗?