十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

小編給大家分享一下c#前臺和后臺線程有什么區(qū)別,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Net的公用語言運行時(Common Language Runtime,CLR)能區(qū)分兩種不同類型的線程:前臺線程和后臺線程。這兩者的區(qū)別就是:應用程序必須運行完所有的前臺線程才可以退出;而對于后臺線程,應用程序則可以不考慮其是否已經(jīng)運行完畢而直接退出,所有的后臺線程在應用程序退出時都會自動結束。
這么說可能不知道有什么區(qū)別:
前臺線程和后臺線程的區(qū)別和聯(lián)系:
1、后臺線程不會阻止進程的終止。屬于某個進程的所有前臺線程都終止后,該進程就會被終止。所有剩余的后臺線程都會停止且不會完成。
2、可以在任何時候將前臺線程修改為后臺線程,方式是設置Thread.IsBackground 屬性。
3、不管是前臺線程還是后臺線程,如果線程內(nèi)出現(xiàn)了異常,都會導致進程的終止。
4、托管線程池中的線程都是后臺線程,使用new Thread方式創(chuàng)建的線程默認都是前臺線程。
.net環(huán)境使用Thread建立的線程默認情況下是前臺線程,即線程屬性IsBackground=false,在進程中,只要有一個前臺線程未退出,進程就不會終止。主線程就是一個前臺線程。而后臺線程不管線程是否結束,只要所有的前臺線程都退出(包括正常退出和異常退出)后,進程就會自動終止。一般后臺線程用于處理時間較短的任務,如在一個Web服務器中可以利用后臺線程來處理客戶端發(fā)過來的請求信息。而前臺線程一般用于處理需要長時間等待的任務,如在Web服務器中的監(jiān)聽客戶端請求的程序,或是定時對某些系統(tǒng)資源進行掃描的程序。
參考:https://www.jb51.net/article/68008.htm
案例
static void Main(string[] args)
{
SampleTread thead = new SampleTread(10);
SampleTread theadback = new SampleTread(10);
var theadone = new Thread(thead.CountNumbers);
var theadtwo = new Thread(theadback.CountNumbers);
theadtwo.IsBackground = true;
theadone.Start();
theadtwo.Start();
}