该程序吐出其中一个框,表示发生了未处理的异常,应用程序必须退出。解决问题的唯一线索就是事件日志:
事件类型:错误 事件源:.NET Runtime 2.0错误报告 活动类别:无 事件ID:5000 日期:2009年9月9日 时间:上午8: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();
}
这样我就可以捕获任何异常,但是用户仍然会收到相同的消息,说该应用必须退出。我无法在我的计算机上重现这一点,因此无法使用调试器来缩小范围。有没有人知道如何收集更多信息或有任何想法是什么问题?
答案 0 :(得分:15)
很可能是异常被抛出在另一个线程上。
您可能想要将处理程序添加到的两个事件:
添加记录异常的处理程序,您将获得更多信息。
非UI线程中未处理异常的行为从.NET 1.1更改为2.0。他们曾经被吞下但现在他们停止了应用程序。如果你愿意,你可以使用app.config标志来选择旧的行为 - 但不是真的推荐,因为另一个线程中的例外可能意味着你的应用现在不稳定。我不记得那时的设置细节,但如果你愿意,我可以查看它们。
答案 1 :(得分:0)
如果您不想在此时更改代码,我可能会使用带有SOS扩展名的WinDbg,因此您至少可以获得堆栈跟踪 - 这些类型的崩溃非常方便。
Real World Walkthrough w/WinDbg
您可以尝试处理UnhandledExceptionEvent。来自MSDN: