| 2018.11.2 | c# |
using System.Threading;
namespace ThreadStudy
{
/// <summary>
/// 等待所有子线程结束
/// </summary>
class StopAllWaitBySubThread
{
List<ManualResetEvent> manualEvents = new List<ManualResetEvent>();
public void Main()
{
for (int i = 0; i < 5; i++)
{
ManualResetEvent mre = new ManualResetEvent(false);
manualEvents.Add(mre);
Param pra = new Param();
pra.mrEvent = mre;
pra.praData = i;
ThreadPool.QueueUserWorkItem(ThreadMethod, pra);
}
WaitHandle.WaitAll(manualEvents.ToArray());
Console.WriteLine("Thread Finished!");
}
private void ThreadMethod(object obj)
{
Thread.Sleep(2000);
Param pra = (Param)obj;
pra.mrEvent.Set();
Console.WriteLine("Thread execute at {0}", pra.praData);
}
}
public class Param
{
public ManualResetEvent mrEvent;
public int praData;
}
}
更新列表:
*
参考文章:
[2]: