class Program { public static int i = 0; public static int n = 50; public static ManualResetEvent[] manualEvents = new ManualResetEvent[n]; static void Main(string[] args) { Console.WriteLine("主线程开始: " + i); Console.WriteLine(); Console.WriteLine("子线程开始:"); run(); Console.WriteLine("子线程节结束: "); Console.WriteLine(); Console.WriteLine("主线程结束: " + i); Console.ReadLine(); } //多线程实例化 public static void run() { Thread[] downloadThread = new Thread[n];//为线程申请资源,确定线程总数 for (int i = 0; i < n; i++)//开启指定数量的线程数 { manualEvents[i] = new ManualResetEvent(false); //方法一 //downloadThread[i] = new Thread(new ParameterizedThreadStart(net)); //downloadThread[i].Start(manualEvents[i]); //方法二 ThreadPool.QueueUserWorkItem(net, manualEvents[i]); } WaitHandle.WaitAll(manualEvents); } //子线程需要执行的大批量耗时运算操作 public static void net(object obj) { for (int j = 0; j < 10000000; j++) { i++; } Console.WriteLine("子线程进行中: " + i); ((ManualResetEvent)obj).Set(); } }