通过使用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...
});
我该怎么做?
答案 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