如何使每个方法等到完成另一个内部并行.Foreach?

时间:2015-09-21 11:20:28

标签: c# parallel-processing task-parallel-library parallel.foreach

通过使用Task Parallel,我遇到了“并行For”的大问题。我想让我的方法和函数同步(等待彼此)。

Parallel.For(items, item=>
{
    var a = MyClass1.Function(foo.x);
    var b = MyClass2.Function(zoo.y, b.z);  ---> Should wait "a" result...
    var c = MyClass2.Method1(a.x,b.z); -----> Should wait b result...
});  

我该怎么做?

1 个答案:

答案 0 :(得分:4)

Parallel.For将在您的items集合中并行运行。它处理的每个item将同步调用给定的委托。意思是,它将执行MyClass1.Function然后MyClass2.Function然后MyClass2.Method1。这假设您的方法是同步的,并且您在其中任何一个内部的后台线程中都没有做任何事情。

想象一下:

                Items
  |          |          |          |
 Item1:      Item2:     Item3:     Item4:
Function1  Function1  Function1  Function1
Function2  Function2  Function2  Function2
Method1    Method1    Method1    Method1