public int NextPrintNo
{
get
{
lock (NextPrintNoLock)
{
int newPrintNo = HeadCompanyDeploy.PrintNo + 1;
CompanyRepository companyRepository = new CompanyRepository();
companyRepository.UpdateCompanyDeployPrintNo(HeadCompanyDeploy.OrgID, newPrintNo);
HeadCompanyDeploy.PrintNo = newPrintNo;//此方法加入线程队列的时间很快会产生垃圾数据
//即便在外层套一个lock也是无效的,因为它很快
//ThreadPool.QueueUserWorkItem(obj =>
//{
// try
// {
// IDID ids = obj as IDID;
// int newPrintNo = ids.ID2 + 1;
// CompanyRepository companyRepository = new CompanyRepository();
// companyRepository.UpdateCompanyDeployPrintNo(ids.ID1, newPrintNo);
// HeadCompanyDeploy.PrintNo = newPrintNo;
// }
// catch { }
//}, new IDID(HeadCompanyDeploy.OrgID, HeadCompanyDeploy.PrintNo));return HeadCompanyDeploy.PrintNo;
}
}
}
c#多线程ThreadPool.QueueUserWorkItem与Lock记录
最新推荐文章于 2024-07-23 11:05:52 发布