using System;using System.Threading;public class ThreadTest{ static double number1 = -1; static double number2 = -1; public static void Main() { int maxThreadNum, portThreadNum; int minThreadNum; ThreadPool.GetMaxThreads(out maxThreadNum, out portThreadNum); ThreadPool.GetMinThreads(out minThreadNum, out portThreadNum); Console.WriteLine("最大線程數:{0}", maxThreadNum); Console.WriteLine("最小線程數:{0}", minThreadNum); int x = 15600; Console.WriteLine("啟動第一個任務:計算{0}的8次方", x); //ThreadPool.QueueUserWorkItem方法線上程池中建立一個線程池線程 //來執行指定的方法(用委託WaitCallback來表示),並將該線程排入線程 //池的隊列等待執行。 ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), x);//x作為TaskProc1方法的參數 Console.WriteLine("啟動第二個任務:計算{0}的8次方根", x); ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc2), x); while (number1 == -1 || number2 == -1) ; //如果兩個數字有任意一個不變化, //說明最少有一個線程沒運行完繼續迴圈直至線程池中所有線程運行完。 Console.WriteLine("y({0})={1}", x, number1 + number2); } static void TaskProc1(object o) { number1 = Math.Pow(Convert.ToDouble(o), 8); } static void TaskProc2(object o) { number2 = Math.Pow(Convert.ToDouble(o), 1.0 / 8.0); }}