我应该在执行并行循环之前锁定列表吗?

时间:2019-01-16 18:54:16

标签: c# asp.net

我有一个方法,它提取对象列表,然后使用Parallel.ForEach循环遍历该列表并执行一些简单的操作。在Parallel.ForEach内部也有1个数据库调用,请参见代码示例。

我想知道是否需要锁,或者何时需要锁。

该项目是ASP.Net MVC项目,在界面中单击按钮时将调用此方法。

List toReturn = new List();

var allGr = Task.Run(() => Tr.GaGr(AuthManager.DepartmentId, 1));
allGr .Wait();

lock (allGr)
{
    Parallel.ForEach(allGr .Result.ToList(), myGri =>
    {
        Groups myGr = new Groups();
        var getGrp = Task.Run(() => myGr.GGID(myGri.GID.Value));
        getGrp.Wait();

        toReturn.Add(myGr);
    });
}

0 个答案:

没有答案