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);
            }//);

  

 

posted @ 2021-01-06 11:37  PanPan003  阅读(78)  评论(0编辑  收藏  举报