在 C# 中将元素添加到 Parallel.ForEach 中的列表时获取数组索引越界异常

Getting Array Index Out of bound exception while adding elements to a List in Parallel.ForEach in C#

我正在尝试在 C# 列表中添加元素。我在 Parallel.ForEach 循环中进行。我正在获取超出绑定执行范围的数组索引。解决方案是什么?

var processes = new List<Process>();
Parallel.ForEach(productList, new ParallelOptions { MaxDegreeOfParallelism = 30 }, product =>
{
      // Some Logic               
      processes.Add(process);
}

A List<T> 不是线程安全的。这意味着您不能同时从多个线程调用它的 Add 方法并期望它起作用。

您应该用 ConcurrentBag<T> 替换列表。另一种选择是同步对列表的访问,例如使用 lock 语句。但是,如果您所做的只是简单地将一个项目添加到循环中的列表中,那么使用 Parallel.ForEachList<T>.

就没有多大意义了