我在C#中使用了一個線程,我將IsBackground屬性設置爲true。線程在循環中運行一些代碼,直到應用程序關閉。當應用程序關閉時,線程也會停止執行(因爲我設置了IsBackground = true)。當應用程序關閉時,我可以檢測到應用程序何時終止了後臺線程?
應用程序如何殺死線程?它似乎不通過調用中止,因爲我沒有得到一個ThreadAbortException。它發生在幕後嗎?我想在循環的最後一部分做一些回滾。
我知道我可以在線程中自己調用abort,但是我想知道應用程序如何關閉我的後臺線程,以及如果我可以從線程內部對其進行響應。我知道我可以訂閱Application.ApplicationExit事件,但我在一個服務和一個winform中運行這個代碼,我更喜歡在循環內捕獲一個異常,所以我能夠在finally語句中回滾。
您可以使其成爲前臺線程並創建手動關閉線程的'全局'應用程序關閉方案。 – CodingBarfield
你看過[AppDomain.ProcessExit](http://msdn.microsoft.com/en-us/library/system.appdomain.processexit.aspx)事件嗎? – Botz3000
所以你們都說它發生在幕後,除了創建這些定製解決方案外,我無法對此做出反應? –