久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      如何區(qū)分c# 前臺和后臺線程

      如何區(qū)分c# 前臺和后臺線程

      Net的公用語言運(yùn)行時(shí)(Common Language Runtime,CLR)能區(qū)分兩種不同類型的線程:前臺線程和后臺線程。這兩者的區(qū)別就是:應(yīng)用程序必須運(yùn)行完所有的前臺線程才可以退出;而對于后臺線程,應(yīng)用程序則可以不考慮其是否已經(jīng)運(yùn)行完畢而直接退出,所有的后臺線程在應(yīng)用程序退出時(shí)都會自動結(jié)束。

      這么說可能不知道有什么區(qū)別:

      前臺線程后臺線程的區(qū)別和聯(lián)系:

      1、后臺線程不會阻止進(jìn)程的終止。屬于某個(gè)進(jìn)程的所有前臺線程都終止后,該進(jìn)程就會被終止。所有剩余的后臺線程都會停止且不會完成。

      2、可以在任何時(shí)候?qū)⑶芭_線程修改為后臺線程,方式是設(shè)置Thread.IsBackground 屬性。

      3、不管是前臺線程還是后臺線程,如果線程內(nèi)出現(xiàn)了異常,都會導(dǎo)致進(jìn)程的終止。

      4、托管線程池中的線程都是后臺線程,使用new Thread方式創(chuàng)建的線程默認(rèn)都是前臺線程。

      .net環(huán)境使用Thread建立的線程默認(rèn)情況下是前臺線程,即線程屬性IsBackground=false,在進(jìn)程中,只要有一個(gè)前臺線程未退出,進(jìn)程就不會終止。主線程就是一個(gè)前臺線程。而后臺線程不管線程是否結(jié)束,只要所有的前臺線程都退出(包括正常退出和異常退出)后,進(jìn)程就會自動終止。一般后臺線程用于處理時(shí)間較短的任務(wù),如在一個(gè)Web服務(wù)器中可以利用后臺線程來處理客戶端發(fā)過來的請求信息。而前臺線程一般用于處理需要長時(shí)間等待的任務(wù),如在Web服務(wù)器中的監(jiān)聽客戶端請求的程序,或是定時(shí)對某些系統(tǒng)資源進(jìn)行掃描的程序。

      案例

      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();            }
      class SampleTread   {     private readonly int _iterations;     public SampleTread(int iterations)     {       this._iterations = iterations;     }     public void CountNumbers()     {       for (int i = 0; i < _iterations; i++)       {         Sleep(TimeSpan.FromSeconds(0.5));         Console.WriteLine($"{ CurrentThread.Name}print{i}");       }     }   }

      分析

      運(yùn)行結(jié)果為,當(dāng)前臺線程執(zhí)行完畢后那么后臺線程也會退出。其實(shí)在操作系統(tǒng)中根本就沒有前后線程這個(gè)概念,那么為什么會有這個(gè)東西呢?

      意義何在?本來是這樣子的當(dāng)我們的主線程結(jié)束的時(shí)候其他線程也應(yīng)該結(jié)束,因?yàn)獒尫帕宋覀兊木€程對象了,如果主線程結(jié)束的時(shí)候不釋放其他線程那么其他線程的危害性真的太大了,所以c#為我們提供了前臺線程和后臺線程這個(gè)概念讓操作線程變得比較簡單。

      至于怎么用,看具體項(xiàng)目了,后臺線程往往起到輔助性的功能。比如說winform,在關(guān)閉窗口后線程進(jìn)程依然沒有關(guān)閉,這就是因?yàn)殛P(guān)閉close后去執(zhí)行關(guān)閉主線程,其他線程關(guān)閉后主線程才會安全關(guān)閉。

      這就是為什么你還可以看到其他線程的原因,當(dāng)然你看到還有其他線程的原因可能是多個(gè)進(jìn)程,其他進(jìn)程的主線程沒有關(guān)閉,這個(gè)需要具體分析了。

      相關(guān)學(xué)習(xí)推薦:C視頻教程

      贊(0)
      分享到: 更多 (0)
      ?
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號