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

XmlNodeList のような非ジェネリック コレクションで foreach を並行して実行できる以下のリンクを見つけました。

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

非ジェネリック コレクションに対する並列 foreach の詳細

于 2014-08-06T06:43:45.423 に答える
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 に答える