【发布时间】:2012-05-12 01:17:17
【问题描述】:
我的应用程序是由父 WPF 应用程序动态加载的程序集。我处理来自组件的 AppDomain.UnhandledException 以处理从任何后台线程抛出的异常。
然而,由于父应用程序也注册了相同的事件,未处理的异常似乎也传播到了父应用程序。
是否有任何方法可以防止未处理的异常不传播到我的父应用程序。
我将无法更改父应用程序的行为,因为这可能会影响在父应用程序内运行的其他组件。
谢谢
【问题讨论】:
-
您是否正在使用 System.Exception 进行捕获?
-
Linquacious,AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException; static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e) { if (e.IsTerminating) { ExceptionProcessor.HandleError(e.ExceptionObject as Exception, "发生未知错误。组件将被关闭", true, true); } else { ExceptionProcessor.HandleError(e.ExceptionObject as Exception, "发生未知错误。", true); } }
-
为什么不在代码中创建不同的处理程序,这样父应用程序的处理程序就永远不会被调用!
-
Linquacious,我在上一条评论中发布的代码在我的组件中。父应用程序也有一个类似的事件处理程序。当发生异常时,两个处理程序都会被调用。
标签: c# wpf multithreading exception-handling unhandled-exception