1. 程式人生 > 實用技巧 >C# 執行緒池

C# 執行緒池

為什麼要用執行緒池?

不需要重複新開銷燬執行緒

環境: vs 2015 .net 4.5.2 輸出環境:控制檯應用程式

貼程式碼:

    class Program
    {
        static int workerThreads;//執行緒池中輔助執行緒的最大數目
        static int completionPortThreads;//執行緒池中非同步 I/O 執行緒的最大數目

        static AutoResetEvent myEvent = new AutoResetEvent(false);//預設阻塞
        
        static void
Main(string[] args) { Console.WriteLine("Begin in Main"); ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); Console.WriteLine($"workerThreads:{workerThreads} completionPortThreads:{completionPortThreads}"); ThreadPool.QueueUserWorkItem(
new WaitCallback(ThreadDo)); Console.WriteLine("End in Main"); myEvent.WaitOne();//是否阻塞 阻塞條件 1、訊號點 AutoResetEvent 為false 2、myEvent.Set(); Console.WriteLine("執行緒池終止!"); Console.ReadKey(); } static void ThreadDo(Object o) {
for (int i = 0; i < 10; i++) { Console.WriteLine(DateTime.Now.ToString() + "[Thread " + (int)i + "] Execute in ThreadDo"); Thread.Sleep(100); } myEvent.Set();//給訊號燈賦值 讓UI執行緒繼續執行 不賦值Ui無限等待 } }
View Code