我有一个让我悲伤的Parallel.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循环可能有什么问题,有什么线索吗?
感谢你的支持。
谢谢
发布于 2014-10-10 14:09:34
我通过将使用括号移动到并行符循环来解决这个问题。原因是dbcontext不是线程安全的。
https://stackoverflow.com/questions/15395979
复制相似问题