2009-01-09 29 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