Parallel.ForEach 中是不是有“继续”的等价物?
Posted
技术标签:
【中文标题】Parallel.ForEach 中是不是有“继续”的等价物?【英文标题】:Is there an equivalent to 'continue' in a Parallel.ForEach?Parallel.ForEach 中是否有“继续”的等价物? 【发布时间】:2011-04-15 11:15:02 【问题描述】:我正在将一些代码移植到Parallel.ForEach
,并在代码中出现continue
错误。我可以在Parallel.ForEach
中使用在功能上等同于foreach
循环中的continue
的东西吗?
Parallel.ForEach(items, parallelOptions, item =>
if (!isTrue)
continue;
);
【问题讨论】:
【参考方案1】:return;
(主体只是为每个项目调用的函数)
【讨论】:
【参考方案2】:当您将循环转换为 Parallel.Foreach 逻辑的兼容定义时,您最终将语句主体设为 lambda。嗯,这是一个被 Parallel 函数调用的动作。
因此,将continue
替换为return
,并用Stop()
或Break()
语句中断。
【讨论】:
ParallelLoopState 的 Stop() 和 Break() 可能比用 return 语句替换 break 更好。 blogs.msdn.com/b/pfxteam/archive/2009/05/27/9645023.aspx @JasonCoder 这些都不等同于continue
。
@将正确,这就是我说休息的原因。 return 语句确实替换了 continue 语句
@JasonCoder - 啊。我误解了你的意思,哎呀。以上是关于Parallel.ForEach 中是不是有“继续”的等价物?的主要内容,如果未能解决你的问题,请参考以下文章
为啥要先执行 Return 语句而不是 Parallel。 ForEach [重复]
在Windows服务中以低于正常优先级停止Parallel.ForEach