下面这个类是具体的实现方法, 主线程可以调用该类的 transAll()
方法,来实现多线程池完成共同逻辑处理,所有线程池执行完毕,返回主线程。
主要过程是由AutoResetEvent和WaitHandle.WaitAll(autoEvents)来实现
public class mulThread
{
#region 成员变量
private int count = 10; //线程池个数
private AutoResetEvent[] autoEvents;
private ManualResetEvent manualEvent;
#endregion
#region 构造函数
public mulThread()
{
autoEvents = new AutoResetEvent[10];
for (int i = 0; i < count; i++)
{
AutoResetEvent aRe = new AutoResetEvent(false);
autoEvents[i] = aRe;
}
}
#endregion
#region
private void testInsert(object stateInfo)
{
int n = (int)stateInfo; //n为线程池编号
//这里添加业务处理过程
...
...
autoEvents[n].Set();
}
#endregion
#region
public string transAll()
{
for (int n = 0; n < count; n++) //添加10个线程,执行同一方法
{
ThreadPool.QueueUserWorkItem(
new WaitCallback(testInsert),n);
}
WaitHandle.WaitAll(autoEvents); //等待所有线程池执行完成
return "完成";
}
#endregion
}