.NET多线程编程之CountdownEvent使用
简单来说,使用这个类可以让主线程等待子线程都完成任务之后才执行任务
1 static void Main(string[] args) 2 { 3 ///子任务的数量 4 CountdownEvent countdownEvent = new CountdownEvent(3); 5 for(int i = 0;i < 3; i++) 6 { 7 ThreadPool.QueueUserWorkItem(state => 8 { 9 Thread.Sleep(1000 * new Random().Next(1, 2)); 10 //发出信号,表明工作已完成 11 countdownEvent.Signal(); 12 MessageBox.Show($"{Thread.CurrentThread.ManagedThreadId} 完成"); 13 }); 14 } 15 //在所有子任务完成之前,调用线程将被阻塞 16 countdownEvent.Wait(); 17 MessageBox.Show("全部工作完成"); 18 }
知其然,而后知其所以然。