程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中前台線程和後台線程的差別與接洽

C#中前台線程和後台線程的差別與接洽

編輯:C#入門知識

C#中前台線程和後台線程的差別與接洽。本站提示廣大學習愛好者:(C#中前台線程和後台線程的差別與接洽)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中前台線程和後台線程的差別與接洽正文


前台線程和後台線程的差別和接洽:

1、後台線程不會阻攔過程的終止。屬於某個過程的一切前台線程都終止後,該過程就會被終止。一切殘剩的後台線程都邑停滯且不會完成。

2、可以在任什麼時候候將前台線程修正為後台線程,方法是設置Thread.IsBackground 屬性。

3、不論是前台線程照樣後台線程,假如線程內湧現了異常,都邑招致過程的終止。

4、托管線程池中的線程都是後台線程,應用new Thread方法創立的線程默許都是前台線程。

 

上面做個小例子來證明一下,代碼以下很簡略:

class Program
  {
static AutoResetEvent autoEvent =new AutoResetEvent(false);

staticvoid Main()
    {
      Thread newThread =new Thread(new ThreadStart(ThreadMethod));
//newThread.IsBackground = true;
      Console.WriteLine("主線程開端履行。");
      newThread.Start();

      Console.WriteLine("主線程停止");
    }

staticvoid ThreadMethod()
    {
//掛起子線程 
      autoEvent.WaitOne();
      
      Console.WriteLine("子線程履行");
    }
  }

我在第9行下了個斷點,來看一下經由過程 new Thread方法創立的線程的IsBackground屬性,截圖以下:


可見經由過程new Thread方法創立的線程,確切是默許為前台線程。
 

法式運轉的成果以下圖:

該掌握太法式沒有像日常平凡一樣主動封閉,而使一向停在那邊。而且我們從圖中可以看到主線程履行完了,而子線程(前台線程)並沒有履行完(由於被autoEvent.WaitOne()辦法掛起了)。

這就解釋了前台線程是可以阻攔過程的終止的。

假如將第8行的正文去失落的話,掌握台法式將主動終止,年夜家可以試一下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved