做一個小項目碰到的問題,先保存下來,再次碰到時,心裏有個數。嘻嘻。
在測試手機地圖時,遇到一個問題,就是內存泄露(OutOfMemoryException),異常代碼0xc0000005,寫入出錯,這是由於沒有及時釋放地圖窗體對象,而又多次連續操作地圖打開、關閉,造成內存泄露,指針指向出現錯誤,內容寫不入對應的地址中。窗體及時釋放後就OK啦。
點擊主界面中關閉系統選項時,報threadAbortexception異常。這是由於關閉系統時,進行線程的Abort()操作時,還有一個線程在運行,沒有關閉,出現此異常,寫了一個單獨的方法,處理沒有關閉的線程就OK啦。
以下是官方對THreadAbortException的解釋:在對 Abort 方法進行調用時引發的異常。
在調用 Abort 方法以銷燬線程時,公共語言運行時將引發 ThreadAbortException。 ThreadAbortException 是一種可捕獲的特殊異常,但在 catch 塊的結尾處它將自動被再次引發。 引發此異常時,運行時將在結束線程前執行所有 finally 塊。 由於線程可以在 finally 塊中執行未綁定計算,或調用 Thread.ResetAbort 來取消中止,所以不能保證線程將完全結束。 如果您希望一直等到被中止的線程結束,可以調用 Thread.Join 方法。 Join 是一個阻塞調用,它直到線程實際停止執行時才返回。
說明 |
---|
在託管可執行文件中的所有前臺線程已經結束後,當公共語言運行時 (CLR) 停止後臺線程時,它不使用 Thread.Abort。 因此,無法使用 ThreadAbortException 來檢測 CLR 何時終止後臺線程。 |