question——并行Parallel.ForEach(needle to handle & resolve)

Parallel.ForEach  代替 foreach:多线程执行

问题:

1.migrateList会增加null数据:即使ForEach内的代码块中,同时3个list同时增加,会出现2个299,第三个300(其中有一个为null)

2.migrateList生成的数据,会存在部分数据缺失的情况

            //Parallel.ForEach(bingAdsInsertionOrders, new ParallelOptions { MaxDegreeOfParallelism = ConfigHelper.MaxDegreeOfParallelism }, (crmItem) =>
            foreach (var crmItem in bingAdsInsertionOrders)
            {
                var migrateItem = _bingAdsInsertionOrderMapSPOrderSvc.Map(crmItem);
                if (migrateItem == null)
                {
                    ErrorHandle($"no data can be maped to save.{JsonConvert.SerializeObject(crmItem)}", null);
                    continue;
                }
                migrateList.Add(migrateItem);
            }//);

  

原文地址:https://www.cnblogs.com/panpanwelcome/p/14240161.html