2010-08-19 75 views
0

我有一个foreach循环,处理xmlnodelist中的几千个xmlnode。我试图集成.net 4中的Parallel.For选项,但是我得到一个错误:“没有方法的重载”对于'需要3个参数'。但是我到目前为止看到的每个例子都是这样写的。我需要改变,以得到这个编译感谢parallel.for question

的Parallel.For(0,jobs.Count,I => { //..do这里工作.. });?

+1

我想我想通了。我在这里展示的示例代码并不完全是我在实际代码中所做的。我正在做Parallel.For (0,jobs.Count ....删除类型参数工作。现在唯一的其他问题是我如何摆脱当前的迭代?它似乎并不喜欢我的继续声明。谢谢。 – 2010-08-19 17:23:23

回答

1

我现在唯一的另一个问题是如何突破目前的迭代?似乎并不喜欢我的继续声明。

当每个迭代可以同时运行时,您希望continue语句如何工作?您应该阅读MSDN上的How to: Stop or Break from a Parallel.For Loop以了解关于此的更多信息,并查看StopBreak方法。

1

现在唯一的其他问题是我如何摆脱当前迭代 ?它似乎不喜欢我的继续发言。

而不是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. 
} 
+0

+1值得注意的是,Parallel.For中没有实际的'break'(在正常意义上)能力.For – Seph 2011-11-03 11:35:22