Parallel.Foreach用于调用和使用多个函数

时间:2016-10-28 16:59:11

标签: c# .net parallel-processing parallel.foreach

我想为下面的代码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);

            });

1 个答案:

答案 0 :(得分:0)

您似乎在幕后使用EF连接,但似乎没有为此设计并且在同一命令上执行多个数据检索。您可以阅读更多相关信息here。它也有解决方案:启用MARS。

因此,据我所知,Parallel.ForEach没有任何问题,但是一些不可能并行运行的基础内容存在问题。

P.S。为了更清楚:你在循环体内的两个函数将在同一个线程上运行。