AppDomain.UnhandledException可以獲的異常,卻截不下來,求解
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
在.Net1.0/1.1下,非主線程的未處理異常將被忽略。這本身不是好事,所以2.0后該行為更改了。
像你的情況可以要求程序兼容1.1行為。
1、添加一個配置文件(App.Config)
2、加入runtime節並指定legacyUnhandledExceptionPolicy:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <legacyUnhandledExceptionPolicy enabled="1"/> </runtime> </configuration>
主線程異常就好處理了。
注:如果“域里試着執行代碼”不用創建線程,則更干凈的做法是設定域權限,使他不能創建線程。同樣主線程異常很好處理。
你采取的是無視異常的方式,不過這種方式有兩個小缺點:運行沒問題,但是卻很難去調試,因為調試時能檢測到異常;在console下,異常依然會顯示在黑屏上。不過這都是小問題,不怎么影響運行就行了:)
“域里試着執行代碼”,代碼好多是別人的,很難保證里面不會創建線程,如果加限制可能使代碼無法正常運行。
微軟的機制還不算太全,勉強用吧
http://bbs.csdn.net/topics/350074469