Parallel.For的执行有两个函数,利用ParallelLoopState对象来控制Parallel.For函数的执行,ParallelLoopState对象是由运行时在后台创建的。
调用ParallelLoopState.Stop,表示Parallel.For的执行立刻停止,无论其他执行单元是否达到停止的条件。
使用ParallelLoopState.Break,则表示满足条件的当前执行单元立刻停止本次循环,其他循环仍要执行。
ParallelLoopState.break类似于for的continue,而ParallelLoopState.stop就类似于for的break。
Parallel.For(1, 100, (i, ParallelLoopState) => {
// 当某一个循环单元的数大于30,
// 则跳出当前执行单元,等待其他执行单元结束
// 所有执行单元结束后退出Parallel.For的执行
if (i > 30)
{
// 跳出当前执行单元
ParallelLoopState.Break();
return;
//不加return,可能会发生该进程资源未释放。
}
});
Parallel.For(1, 100, (i, ParallelLoopState) =>
{
// 当某一个循环单元的数大于30,
// 则停止Parallel.For的执行
if ( i > 30)
{
// 停止并退出Parallel.For
ParallelLoopState.Stop();
return;
}
});
Parallel.ForEach(elements, (element, ParallelLoopState) =>
{
if (element == "")
{
ParallelLoopState.Break();
return;
}
});