我已經繼承了一些服務代碼,我試圖找出服務崩潰的問題。我發現下面的代碼在很多地方:.NET運行時是否調用過Thread.Abort()?
catch (ThreadAbortException)
{
throw;
}
但是,我無法找到該項目(或相關項目)的任何部分Thread.Abort()
或Thread.Kill()
任何來電。
是否曾經隱式地由.NET運行時調用Thread.Abort()
,或者該異常是否只存在於開發人員所做的調用中?我試圖縮小我的錯誤途徑,並且我對C#中的線程不太熟練。我試圖確定我所展示的catch塊是否實際命中,如果Thread.Abort()
實際上從未在我的代碼庫中實際調用過。
謝謝!
編輯:我想澄清 - 我知道,.NET可以殺死線程,但我想知道,如果它特別呼籲Thread.Abort()
,或者是否使用了一些其他方式(如ThreadAbortException
只呼籲Thread.Abort()
是的,運行時會中止線程。這些是*粗暴*中止,在AppDomain卸載時觸發,它們不會觸發該代碼。避免假設之前的程序員知道他在做什麼或者正確清理了他的代碼。畢竟,他也許認爲這不是一個好主意。事實並非如此。 –