在"線程系列04,傳遞數據給線程,線程命名,線程異常處理,線程池"中,我們已經知道,每個進程都有一個線程池。可以通過TPL,ThreadPool.QueueUserWorkItem,委托與線程池交互。本篇體驗:通過查看CLR代碼來觀察線程池及其線程。
□ 通過編碼查看線程池和線程
使用ThreadPool的靜態方法QueueUserWorkItem把線程放入線程池,來看線程池線程和主程序線程的執行情況。
class PRogram{static void Main(string[] args){Console.WriteLine("主線程開始");for (int i = 0; i < 5; i++){ThreadPool.QueueUserWorkItem(SayHello, i);}Console.WriteLine("主線程結束");}static void SayHello(object arg){int n = (int) arg;Console.WriteLine("線程{0}接收到的參數是:{1},是否是后臺線程:{2}",Thread.CurrentThread.ManagedThreadId,n,Thread.CurrentThread.IsBackground);}}

○ 用QueueUserWorkItem方法加入線程池的線程是后臺線程○ 一旦主線程結束,后臺線程隨即結束○ 在主程序for語句塊中,有2個線程已被創建并執行
讓主線程和線程池線程都Sleep一段時間。
class Program{static Random r = new Random();static void Main(string[] args){Console.WriteLine("主線程開始");for (int i = 0; i < 5; i++){ThreadPool.QueueUserWorkItem(SayHello, i);}Thread.Sleep(r.Next(250, 500));Console.WriteLine("主線程結束");}static void SayHello(object arg){Thread.Sleep(r.Next(250, 50
新聞熱點
疑難解答