我有一个foreach循环,处理xmlnodelist中的几千个xmlnode。我试图集成.net 4中的Parallel.For选项,但是我得到一个错误:“没有方法的重载”对于'需要3个参数'。但是我到目前为止看到的每个例子都是这样写的。我需要改变,以得到这个编译感谢parallel.for question
的Parallel.For(0,jobs.Count,I => { //..do这里工作.. });?
我有一个foreach循环,处理xmlnodelist中的几千个xmlnode。我试图集成.net 4中的Parallel.For选项,但是我得到一个错误:“没有方法的重载”对于'需要3个参数'。但是我到目前为止看到的每个例子都是这样写的。我需要改变,以得到这个编译感谢parallel.for question
的Parallel.For(0,jobs.Count,I => { //..do这里工作.. });?
我现在唯一的另一个问题是如何突破目前的迭代?似乎并不喜欢我的继续声明。
当每个迭代可以同时运行时,您希望continue
语句如何工作?您应该阅读MSDN上的How to: Stop or Break from a Parallel.For Loop以了解关于此的更多信息,并查看Stop和Break方法。
现在唯一的其他问题是我如何摆脱当前迭代 ?它似乎不喜欢我的继续发言。
而不是continue
,请使用break
。而不是:
for (int i = 1; i < jobs.Count; i++) {
// Initialise iteration.
if (iterationInvalid) continue;
// Do work.
}
什么你基本上得到的是:
for (int i = 1; i < jobs.Count; i++)
action(i);
void action (int i) {
// Initialise iteration.
if (iterationInvalid) break;
// Do work.
}
+1值得注意的是,Parallel.For中没有实际的'break'(在正常意义上)能力.For – Seph 2011-11-03 11:35:22
我想我想通了。我在这里展示的示例代码并不完全是我在实际代码中所做的。我正在做Parallel.For(0,jobs.Count ....删除类型参数工作。现在唯一的其他问题是我如何摆脱当前的迭代?它似乎并不喜欢我的继续声明。谢谢。 –
2010-08-19 17:23:23