15

これがコードです

List<string> something = new List<string>();
Parallel.ForEach(anotherList, r =>
     {
            .. do some work
             something.Add(somedata);
      });

Index out of bounds100回の実行につき約1回エラーが発生します。スレッド化によって引き起こされる(私が推測する)競合を防ぐ方法はありますか?

4

2 に答える 2

22

この問題を防ぐために、リストの代わりにConcurrentQueue、並列部分でまたは同様の並行コレクションを使用することができます。並列タスクが完了したら、それをに入れることができますList<T>

詳細については、System.Collections.Concurrent名前空間を調べて、ユースケースに適したコレクションを見つけてください。

于 2012-08-15T22:15:55.257 に答える
0

私はそれlock (yourObject)も糸脱毛の問題を否定することを発見しました

于 2014-08-21T05:56:12.893 に答える