国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#中前臺線程和后臺線程的區別與聯系

2020-01-24 01:42:16
字體:
來源:轉載
供稿:網友

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

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行的注釋去掉的話,控制臺程序將自動終止,大家可以試一下。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 农安县| 淳化县| 潍坊市| 江山市| 广河县| 同江市| 灵宝市| 江华| 徐闻县| 龙里县| 华亭县| 安西县| 平泉县| 上杭县| 内丘县| 微山县| 万州区| 关岭| 焦作市| 兴山县| 图木舒克市| 准格尔旗| 萨迦县| 连南| 泰顺县| 梁平县| 辰溪县| 楚雄市| 东乌珠穆沁旗| 井冈山市| 辛集市| 咸宁市| 黔东| 宁安市| 龙里县| 遂溪县| 黑水县| 荣成市| 日照市| 沽源县| 平度市|