在Parallel.ForEach中是否有等同于“ continue”的内容?


249

我正在将一些代码移植到代码中Parallel.ForEach,但出现错误continue。我是否可以在Parallel.ForEach功能上等效continueforeach循环中使用等效项?

Parallel.ForEach(items, parallelOptions, item =>
{
    if (!isTrue)
        continue;
});

Answers:


414
return;

(主体只是为每个项目调用的函数)


23

当您将循环转换为Parallel.Foreach逻辑的兼容定义时,最终使语句主体成为lambda。好吧,这是一个由Parallel函数调用的动作。

因此,更换continuereturn,并与突破Stop()Break()语句。


1
一个比用return语句替换中断更好的选择是ParallelLoopState的Stop()和Break()。 blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx
JasonCoder

@JasonCoder这些都不是等效的continue

1
@将正确,这就是为什么我说休息。返回语句代替替换继续语句
JasonCoder 16'Aug

@JasonCoder-啊 我误会了你的意思,哎呀。

-1

要继续,则意味着跳过该块的其余部分,然后移至下一项。因此,您可以通过对块的其余部分应用相反的条件来实现继续。

例如,问题中的代码将被重写为:

Parallel.ForEach(items, parallelOptions, item =>
{
    //Skip an item by applying the opposite condition used for continue on all items until the end of the foreach

    if (isTrue) 
    {
      //Do what you want to do for all items
    }

});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.