在多線程的應用開發過程中,我們可能會遇到某些任務需要等待所有線程執行完成后,再進行處理。搜了下關於這方面的解決方案,在這里不做細說。
今天主要是想說下C#多線程中,可以利用ManualResetEvent對象,結合WaitHandle的WaitAll(...)方法,來實現所有線程執行完畢后的處理工作。
大家可以進一步的了解下ManualResetEvent對象。
List<ManualResetEvent> list = new List<ManualResetEvent>(); for (int i = 0; i < 10; i++) { ManualResetEvent mre = new ManualResetEvent(false); System.Threading.Thread thread = new Thread((o) => { Console.WriteLine("線程:{0}", System.Threading.Thread.CurrentThread.ManagedThreadId); ((ManualResetEvent)o).Set(); }); list.Add(mre); thread.Start(mre); } WaitHandle.WaitAll(list.ToArray()); Console.WriteLine("所有線程完成任務!");