我有以下代码:
foreach (XmlNode xn in xnList)
{
String NAME = xn["name"].InnerText;
}
我想并行启动每个循环。我怎样才能做到这一点?我认为我可以使用以下方法,但我无法弄清楚如何使其工作:
ParallelOptions parOptions = new ParallelOptions();
parOptions.MaxDegreeOfParallelism = 4; //only up to 5 threads allowed.
Parallel.ForEach(xnList.AsEnumerable(), parOptions, xn=>
{
String NAME = xn["name"].InnerText;
}
答案 0 :(得分:2)
我提出了这个解决方案:
var parallelLoop1 = xnList.Count;
Parallel.For(0, parallelLoop1, index =>
{
String NAME = xnList[index]["name"].InnerText;
}
答案 1 :(得分:2)
您尝试的操作如下:
Parallel.ForEach(xnList.AsEnumerable(),
item=>{String NAME = item["name"].InnerText;});
但是如果您使用winform并且想要执行某些进程并防止等待光标,则这是另一个问题。
答案 2 :(得分:1)
我发现下面的链接允许你在非通用集合(如XmlNodeList)上并行执行foreach。
// Process the results in parallel
Parallel.ForEach(nodes.Cast<XmlNode>(), options, (thenode) =>
{
// do stuff
});