如何让每个方法等待完成 parallel.Foreach 中的另一个方法?

How to make each method wait to complete another inside of parallel.Foreach?

我对 "parallel For" 使用 Task Parallel 有一个大问题。我想让我的方法和函数同步(互相等待)。

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...
});  

我该怎么做?

Parallel.For 将 运行 并行跨越 items 的 collection。它处理的每个 item 将同步调用给定的委托。意思是,它将执行 MyClass1.Function 然后 MyClass2.Function 然后 MyClass2.Method1。这是假设您的方法是同步的,并且您没有在其中任何方法的后台线程中执行任何操作。

想象一下:

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