標籤:winform style http io color ar os for sp
EventType clr20r3, P1 ggreadcard.exe, P2 1.0.0.0, P3 51d3d283, P4 zljy.common, P5 1.0.0.0, P6 4fc6c236, P7 31, P8 28, P9 system.nullreferenceexception, P10 NIL. 要怎麼解決呢!解決問題的辦法是先要找到問題的根源。
在開發winform程式時,用到多線程,在伺服器部署後運行,老是自動關才程式,癥狀描述如下:
在Windows Server 2003的作業系統上,運行.Net 2.0或者3.5的應用程式時,會發現沒有任何反應,到系統的事件檢視器裡會發現類似EventType clr20r3 P1....P2...PN的錯誤提示。
很可能的原因就是:應用程式出現了異常,而.net沒有或者無法捕捉該異常,所以導致出現如下情況:
1.程式自動關閉。
2.此時去工作管理員中會看到一個DW20.exe的進程,不久會自動消失
3.到事件檢視器裡面會發現類似EventType clr20r3 P1....P2...PN的錯誤提示。
解決方案一:.在config檔案中<configuration> <runtime> <legacyUnhandledExceptionPolicy enabled="true" /> </runtime></configuration>這樣,主程式遇到未捕獲異常不會強制關閉,但為了程式的穩定性與安全性,應該找出拋異常的地方,將其修改。
解決方案二:
用到UnhandledExceptionEventHandler事件,通過這個事件,我們可以截獲未捕獲異常,並進行處理。
這個事件的事件參數UnhandledExceptionEventArgs e, 有兩個屬性,一個是ExceptionObject,這個屬性返回為截獲異常的對象執行個體。還有一個屬性是IsTerminating,這個屬性告訴我們這個異常是否會導致應用終止。這裡需要說明的是,對於.Net1.1 和 .Net2.0及以上,情況是不一樣的,.Net1.1 只有在主線程中的未捕獲異常才會終止應用程式,而.Net2.0及以上版本則是始終終止應用程式。
在主表單main下,加
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(UnhandledExceptionEventHandler);
並編碼UnhandledExceptionEventHandler事件,
static void UnhandledExceptionEventHandler(object sender, UnhandledExceptionEventArgs e)
{
try
{
LogHelper.ErrorLog(e.ExceptionObject.ToString());//LogHelper是寫日誌的類,這裡,可以直接寫到檔案裡
}
catch
{
}
}
運行程式,異常捕獲,找到了問題所在,對代碼進行改寫。
www.wonima.com 我尼瑪世界上最好看的笑話圖片網站
window表單程式意外崩潰,EventType clr20r3錯誤的解決方案