最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中前臺(tái)線程和后臺(tái)線程的區(qū)別與聯(lián)系

 更新時(shí)間:2015年06月17日 10:49:28   投稿:junjie  
這篇文章主要介紹了C#中前臺(tái)線程和后臺(tái)線程的區(qū)別與聯(lián)系,本文先講解了它們的區(qū)別,然后給出了一個(gè)例子來(lái)驗(yàn)證這些區(qū)別,需要的朋友可以參考下

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

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

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

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

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

 

下面做個(gè)小例子來(lái)證實(shí)一下,代碼如下很簡(jiǎn)單:

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

staticvoid Main()
    {
      Thread newThread =new Thread(new ThreadStart(ThreadMethod));
//newThread.IsBackground = true;
      Console.WriteLine("主線程開(kāi)始執(zhí)行。");
      newThread.Start();

      Console.WriteLine("主線程結(jié)束");
    }

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

我在第9行下了個(gè)斷點(diǎn),來(lái)看一下通過(guò) new Thread方式創(chuàng)建的線程的IsBackground屬性,截圖如下:


可見(jiàn)通過(guò)new Thread方式創(chuàng)建的線程,確實(shí)是默認(rèn)為前臺(tái)線程。
 

程序運(yùn)行的結(jié)果如下圖:

該控制太程序沒(méi)有像平時(shí)一樣自動(dòng)關(guān)閉,而使一直停在那里。并且我們從圖中可以看到主線程執(zhí)行完了,而子線程(前臺(tái)線程)并沒(méi)有執(zhí)行完(因?yàn)楸籥utoEvent.WaitOne()方法掛起了)。

這就說(shuō)明了前臺(tái)線程是可以阻止進(jìn)程的終止的。

如果將第8行的注釋去掉的話,控制臺(tái)程序?qū)⒆詣?dòng)終止,大家可以試一下。

相關(guān)文章

最新評(píng)論

兴城市| 沂源县| 庆元县| 金湖县| 武宣县| 台北市| 义乌市| 双牌县| 汉源县| 东乡族自治县| 唐河县| 个旧市| 深泽县| 苏尼特右旗| 古浪县| 金平| 苏尼特左旗| 会同县| 三门县| 瑞昌市| 车险| 灵丘县| 德保县| 临颍县| 大洼县| 屯留县| 青神县| 兴国县| 大姚县| 洞头县| 新平| 武隆县| 阿拉善右旗| 平谷区| 平武县| 东乡| 施秉县| 寿宁县| 聊城市| 油尖旺区| 桐乡市|