连续的.NET Parallel For - 在每次之后阻塞

Col*_*yes 5 .net parallel-processing

我连续几个Parallel.For操作.

我目前正在检查每个Parallel.For的返回值ParallelLoopResult并睡眠20毫秒,直到IsCompleted成员设置为true.


Dim plr as ParallelLoopResult 

plr = Parallel.For(...)

while not plr.IsCompleted
  Thread.Sleep(20)
end while

plr = Parallel.For(...)

while not plr.IsCompleted
  Thread.Sleep(20)
end while

.
.
.
Run Code Online (Sandbox Code Playgroud)

如何添加内核级别块(即WaitHandle)来代替循环和Thread.Sleep?是否存在Parallel.For触发的完成事件?Parallel.For是否提供这样的机制?

Pie*_*kel 4

Parallel.For完成它所要求的所有代码。只有IsCompleted返回false则循环被中断。

http://msdn.microsoft.com/en-us/library/system.threading.tasks.parallelloopresult.aspx

如果 IsCompleted 返回 true,则循环运行完成,从而执行循环的所有迭代。如果 IsCompleted 返回 false 并且 LowestBreakIteration 返回 null,则调用 Stop 会提前结束循环。如果 IsCompleted 返回 false 并且 LowestBreakIteration 返回非空整数值,则使用 Break 提前结束循环。