0

我有以下代码:

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;
        }
4

3 回答 3

2

我想出了这个解决方案:

        var parallelLoop1 = xnList.Count;
        Parallel.For(0, parallelLoop1, index =>
        {
         String NAME = xnList[index]["name"].InnerText;
        }
于 2012-07-07T15:30:16.103 回答
2

您尝试的操作如下:

Parallel.ForEach(xnList.AsEnumerable(),
                 item=>{String NAME = item["name"].InnerText;});

但是,如果您使用 winform 并且想要执行一些进程并防止等待光标,这是另一个问题。

于 2012-07-07T15:33:24.737 回答
2

我在下面的链接中找到了这个链接,它允许您在 XmlNodeList 等非泛型集合上并行执行 foreach。

// Process the results in parallel
Parallel.ForEach(nodes.Cast<XmlNode>(), options, (thenode) =>
{
    // do stuff
});

非泛型集合上的并行 foreach 的详细信息

于 2014-08-06T06:43:45.423 回答