我想为下面的代码snipet做一个Parallel.ForEach(...),但因为有两个函数调用 - 两者都应该在同一个块中发生,因为第二个函数正在消耗第一个函数返回的值功能。我不知道是谁得到了这个。基本上我想将下面转换为Parallel.ForEach(...)。提前谢谢。
List<Employee> employeeList = GetEmployees();
foreach (var emp in employeeList)
{
var empDetails = GetEmpDetails(emp.EmployeeId);
ProcessEmployeeDetails(empDetails);
}
我已经尝试过以下内容,但它无效:
Parallel.ForEach(employeeList, emp =>
{
var empDetails = GetEmpDetails(emp.EmployeeId);
ProcessEmployeeDetails(empDetails);
});
答案 0 :(得分:0)
您似乎在幕后使用EF连接,但似乎没有为此设计并且在同一命令上执行多个数据检索。您可以阅读更多相关信息here。它也有解决方案:启用MARS。
因此,据我所知,Parallel.ForEach没有任何问题,但是一些不可能并行运行的基础内容存在问题。
P.S。为了更清楚:你在循环体内的两个函数将在同一个线程上运行。