C#多线程添加到列表中

时间:2014-01-07 20:02:31

标签: c# multithreading

我想使用多线程将新元素添加到列表中。

我知道这不是一个好主意,我只是想找到这样的东西。

我只需要添加新的,不需要更改任何已存在的元素。

2 个答案:

答案 0 :(得分:1)

List不能同时从多个线程访问。您不能同时添加多个项目的多个线程。尝试这样做可能会导致整个列表损坏,从而导致异常,跳过项目,从未添加新数据或其他类型的未定义行为。

如果要生成要添加到集合的对象,请考虑使用System.Collections.Concurrent命名空间中的数据结构,例如带有BlockingCollectionConcurrentQueue的{​​{1}}同时从多个线程。

答案 1 :(得分:0)

您需要使用Thread-Safe集合来执行此操作。查看ConcurrentQueue<T>ConcurrentBag<T>BlockingCollection<T>(适用于ProducerConsumer)

http://msdn.microsoft.com/en-us/library/dd997305(v=vs.110).aspx