private static void MyHttpRequest(object state) { // Thread.Sleep(1000); Console.WriteLine(String.Format("哈哈:{0}", ++i)); MutipleThreadResetEvent countdown = state as MutipleThreadResetEvent; //发送信号量 本线程执行完毕 countdown.SetOne(); }
/// <summary> /// 主方法 /// </summary> /// <param name="args">参数</param> static void fun2() { //假设有100个请求线程 int num = 100; //使用 MutipleThreadResetEvent using (var countdown = new MutipleThreadResetEvent(num)) { for (int i = 0; i < num; i++) { //开启N个线程,传递MutipleThreadResetEvent对象给子线程 ThreadPool.QueueUserWorkItem(MyHttpRequest, countdown); } //等待所有线程执行完毕 countdown.WaitAll(); } Console.WriteLine("所有的网络请求以及完毕,可以继续下面的分析..."); Console.ReadKey(); }