Net的CLR將線程分爲前臺和後臺線程,前臺線程是用戶線程,後臺線程是守候線程。
這兩者的區別就是:應用程序必須運行完所有的前臺線程纔可以退出;而對於後臺線程,應用程序則可以不考慮其是否已經運行完畢而直接退出,所有的後臺線程在應用程序退出時都會自動結束,後臺線程不會阻止進程終止,一旦屬於某一進程的所有前臺線程都終止,公共語言運行庫就會通過對任何仍然處於活動狀態的後臺線程調用 Abort 來結束該進程。
Thread.IsBackground 設置爲 true,就可以將線程指定爲後臺線程。同樣,通過將 IsBackground 設置爲 false,就可以將線程指定爲前臺線程。
線程的前後臺屬性在線程運行前制定。
通過創建並啓動新的 Thread 對象而生成的所有線程都是前臺線程。如果要創建希望用來偵聽某些活動(如套接字連接)的前臺線程,則應將 Thread.IsBackground 設置爲 true,以便進程可以終止。