2009-01-09 22 views
3

程序吐出其中一个框,表示发生了未处理的异常并且应用程序必须退出。唯一的线索,我得到解决的问题是这在事件日志中:Winforms毫不客气地退出“未处理的异常”

事件类型:错误 事件来源:.NET运行库2.0错误报告 事件类别:无 事件ID:5000 日期:1 /二千○九分之九 时间:上午08时47分44秒 用户:N/A 计算机:DADIEHL 描述: 的EventType clr20r3,P1 crm.client.exe,P2 1.0.1.0,P3 49667f61,P4 mscorlib程序,P5 2.0 .0.0,P6 471ebc5b,P7 c35,P8 59,P9 system.formatexception,P10 NIL。

所以我下面的代码添加到Program.cs中:

try 
{ 
    Application.Run(new WindowContainer()); 
} 
catch (Exception exc) 
{ 
    new DialogException(exc).ShowDialog(); 
} 

只是让我能赶上任何异常,但用户仍然收到这个说应用必须退出相同的消息。我无法在我的计算机上重现此内容,因此无法使用调试器将其缩小。有没有人知道收集更多信息或有什么想法是什么问题?

回答

15

很可能是异常被抛出到另一个线程上。您可能希望处理程序添加到

两个事件:

添加该记录异常处理程序,你就会有更多的信息。

非UI线程中的未处理异常的行为已从.NET 1.1更改为2.0。他们过去只是被吞下,但现在他们停止了应用程序。如果需要,可以使用一个app.config标志来选择旧行为 - 但这并不是真正的建议,因为另一个线程中的异常可能意味着您的应用程序现在不稳定。我不记得当时的设置细节,但如果你愿意,我可以查看它们。

+0

谢谢。我现在正在与此战斗,这是我经过几个小时的谷歌搜索后发现的第一个有用的帖子。 – David 2009-08-27 21:48:09

0

如果你不想在第二秒进行代码更改,我可能会使用带有SOS扩展名的WinDbg,所以你至少可以得到一个堆栈跟踪 - 这些类型的崩溃非常方便。

Real World Walkthrough w/WinDbg

你可以尝试处理UnhandledExceptionEvent。从MSDN:

UnhandledExceptionEvent