C#.Net前臺執行緒與後臺執行緒的區別

世紀緣發表於2016-08-31
.Net的公用語言執行時(Common Language Runtime,CLR)能區分兩種不同型別的執行緒:前臺執行緒和後臺執行緒。這兩者的區別就是:應用程式必須執行完所有的前臺執行緒才可以退出;而對於後臺執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後臺執行緒在應用程式退出時都會自動結束。

  .Net環境使用Thread建立的執行緒預設情況下是前臺執行緒,即執行緒屬性IsBackground=false,在程式中,只要有一個前臺執行緒未退出,程式就不會終止。主執行緒就是一個前臺執行緒。
而後臺執行緒不管執行緒是否結束,只要所有的前臺執行緒都退出(包括正常退出和異常退出)後,程式就會自動終止。一般後臺執行緒用於處理時間較短的任務,如在一個Web伺服器中可以利用後臺執行緒來處理客戶端發過來的請求資訊。而前臺執行緒一般用於處理需要長時間等待的任務,如在Web伺服器中的監聽客戶端請求的程式,或是定時對某些系統資源進行掃描的程式。
 
需要明白的概念性問題:
執行緒是寄託在程式上的,程式都結束了,執行緒也就不復存在了!
只要有一個前臺執行緒未退出,程式就不會終止!即說的就是程式不會關閉!(即在資源管理器中可以看到程式未結束。)

相關文章