我有一个方法,它提取对象列表,然后使用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);
});
}