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行的正文去失落的話,掌握台法式將主動終止,年夜家可以試一下。