List<ManualResetEvent> manualEvents = new List<ManualResetEvent>(); //线程集合 001
foreach (var item in serialList)
{
var ready = ProjectDic.SingleOrDefault(m => m.PART_TASK_PK == item.PART_TASK_PK);
ManualResetEvent mre = new ManualResetEvent(false);//002
manualEvents.Add(mre);
ParamGiao pra = new ParamGiao(); //需要传递的参数//003
pra.mrEvent = mre;
pra.ERPORDERID = item.ERPORDERID;
pra.PART_TASK_PK = item.PART_TASK_PK;
pra.ready = ready;
pra.dal = dal;
pra.sapDal = sapDal;
pra.Item = item;
pra.userid = _User.Usserid;
pra.type = GetPara("type");
ThreadPool.QueueUserWorkItem(BatchMating, pra); //004
}
WaitHandle.WaitAll(manualEvents.ToArray());//程序会在此处暂停,等待子线程运行结束。 005
//被线程调用的方法
private void BatchMating(object obj)
{
ParamGiao pra = (ParamGiao)obj;
var ss = DateTime.Now;
var list = pra.dal.GetOrderBatchBom2(pra.ERPORDERID, pra.PART_TASK_PK, pra.ready);
var giao = (DateTime.Now - ss).TotalSeconds;
}
多线程使用(当线程池里有需要多个人同时访问的时候,采用多线程) 批量操作的时候也可以使用
最新推荐文章于 2021-08-25 11:48:20 发布