【发布时间】:2010-04-29 14:49:14
【问题描述】:
我有一个 WinForm 应用程序,它依赖于外部库,有时会导致运行线程上下文之外的异常。就目前而言,这是完全正常的行为(当然,除了异常),我们连接 AppDomain.CurrentDomain.UnhandledException 以简单地重新启动程序。
唯一的问题是,[Your Program] 已停止工作,如下所示: alt text http://telcontar.net/store/archive/CrashGallery/images/crash/vista/2007-05-30%20Microsoft%20Register%20Server.png
有没有办法完全阻止此对话框出现,无论是在 AppDomain 未处理的异常处理程序中还是在配置设置中,因为没有最终用户会阅读它并且它只会占用资源直到它被点击.
【问题讨论】:
-
AFAIK,该对话框仅在您的应用程序以异常方式终止(例如未处理的异常)时显示。您确定您的未处理异常处理程序在所有情况下都能正常工作吗?
-
是和不是。你是对的,对话框是因为一个未处理的异常,是的,AN 异常处理程序没有处理它。但是,异常的代码位于 WCF 托管服务中,因此,托管 WCF 服务的 WinForm 应用程序最终无法控制异常,除非在 AppDomain.CurrentDomain.UnhandledException 中注意到它。理想的解决方案是找到并修复所有未处理的异常,但现在我很高兴只记录发生的异常,重新启动 APP(以及 WCF 服务),而不是让应用程序终止并挂起。