15

这是代码

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

Index out of bounds每百次运行我会收到大约 1 次错误。有没有办法防止线程引起的冲突(我假设)?

4

2 回答 2

22

为了防止出现此问题,您可以ConcurrentQueue在并行部分中使用或类似的并发集合,而不是 List。并行任务完成后,您可以将其放入List<T>.

有关更多信息,请查看 System.Collections.Concurrent 命名空间以找到适合您的用例的集合。

于 2012-08-15T22:15:55.257 回答
0

我发现这lock (yourObject)也否定了线程问题

于 2014-08-21T05:56:12.893 回答