亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c# 前臺和后臺線程有什么區別

發布時間:2020-07-22 10:00:53 來源:億速云 閱讀:141 作者:Leah 欄目:編程語言

c# 前臺和后臺線程有什么區別?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

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

這么說可能不知道有什么區別:

前臺線程后臺線程的區別和聯系:

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

2、可以在任何時候將前臺線程修改為后臺線程,方式是設置Thread.IsBackground 屬性。

3、不管是前臺線程還是后臺線程,如果線程內出現了異常,都會導致進程的終止。

4、托管線程池中的線程都是后臺線程,使用new Thread方式創建的線程默認都是前臺線程。

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

案例

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}");
      }
    }
  }

分析

運行結果為,當前臺線程執行完畢后那么后臺線程也會退出。其實在操作系統中根本就沒有前后線程這個概念,那么為什么會有這個東西呢?

意義何在?本來是這樣子的當我們的主線程結束的時候其他線程也應該結束,因為釋放了我們的線程對象了,如果主線程結束的時候不釋放其他線程那么其他線程的危害性真的太大了,所以c#為我們提供了前臺線程和后臺線程這個概念讓操作線程變得比較簡單。

至于怎么用,看具體項目了,后臺線程往往起到輔助性的功能。比如說winform,在關閉窗口后線程進程依然沒有關閉,這就是因為關閉close后去執行關閉主線程,其他線程關閉后主線程才會安全關閉。

這就是為什么你還可以看到其他線程的原因,當然你看到還有其他線程的原因可能是多個進程,其他進程的主線程沒有關閉,這個需要具體分析了。


關于c# 前臺和后臺線程有什么區別問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

秀山| 安丘市| 武川县| 泰兴市| 平顶山市| 山西省| 榆林市| 都昌县| 西贡区| 胶南市| 蕉岭县| 北川| 手游| 衡山县| 天峨县| 桓仁| 崇信县| 台中市| 玉田县| 喀喇沁旗| 万载县| 周宁县| 通河县| 兴和县| 唐海县| 华宁县| 铜陵市| 长白| 鄂州市| 新绛县| 仁怀市| 太湖县| 台湾省| 济宁市| 太仆寺旗| 马关县| 玉环县| 吴旗县| 乌拉特中旗| 布拖县| 五峰|