線程中斷異常的處理 abort()

  做一個小項目碰到的問題,先保存下來,再次碰到時,心裏有個數。嘻嘻。

 

       在測試手機地圖時,遇到一個問題,就是內存泄露(OutOfMemoryException),異常代碼0xc0000005,寫入出錯,這是由於沒有及時釋放地圖窗體對象,而又多次連續操作地圖打開、關閉,造成內存泄露,指針指向出現錯誤,內容寫不入對應的地址中。窗體及時釋放後就OK啦。
    點擊主界面中關閉系統選項時,報threadAbortexception異常。這是由於關閉系統時,進行線程的Abort()操作時,還有一個線程在運行,沒有關閉,出現此異常,寫了一個單獨的方法,處理沒有關閉的線程就OK啦。

 

    以下是官方對THreadAbortException的解釋:在對 Abort 方法進行調用時引發的異常。

    

在調用 Abort 方法以銷燬線程時,公共語言運行時將引發 ThreadAbortException ThreadAbortException 是一種可捕獲的特殊異常,但在 catch 塊的結尾處它將自動被再次引發。 引發此異常時,運行時將在結束線程前執行所有 finally 塊。 由於線程可以在 finally 塊中執行未綁定計算,或調用 Thread.ResetAbort 來取消中止,所以不能保證線程將完全結束。 如果您希望一直等到被中止的線程結束,可以調用 Thread.Join 方法。 Join 是一個阻塞調用,它直到線程實際停止執行時才返回。

說明

在託管可執行文件中的所有前臺線程已經結束後,當公共語言運行時 (CLR) 停止後臺線程時,它不使用 Thread.Abort 因此,無法使用 ThreadAbortException 來檢測 CLR 何時終止後臺線程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章