Parallel.Foreach问题

时间:2013-03-13 20:38:20

标签: c#

我有一个Parallel.Foreach循环给了我悲伤,想看看你们其中一个人是否可以对此有所了解。很遗憾,谷歌搜索它很少。

这是结:

我的foreach循环:

string [] Ids = {........}; //a string array of ID's
using(IUnitOfWork uw = GetUnitOfWork())
     {
            Parallel.ForEach(Ids, currentRecord =>
            {
                var x = (from h in uw.GetRepository<EFEntity1>().AsQueryable()
                         join k in uw.GetRepository<EFEntity2>().AsQueryable()
                         on h.ID equals k.ID
                         join l in uw.GetRepository<EFEntity3>().AsQueryable() on 
                          h.FundAccount equals l.FundAccount
                         where h.ID == currentRecord
                         select new { h.x, h.y, h.z});
                foreach (var v in x)
                {
                    if (v.SomeMember == "foo")
                    {

                    }
                    Console.WriteLine("Output : {0} {1} {2} {3} {4} ", v.x, 
                                      v.y, v.z);
                }
            });
        }

LINQ语句是我得到ArgumentExcpetion抛出的地方:

  

已添加具有相同键的项目

在这种情况下我实现foreach循环可能出错的任何线索?

感谢支持。

由于

1 个答案:

答案 0 :(得分:4)

我通过将使用支架移动到并行循环中解决了这个问题。原因是因为dbcontext不是线程安全的。