我想使用多线程将新元素添加到列表中。
我知道这不是一个好主意,我只是想找到这样的东西。
我只需要添加新的,不需要更改任何已存在的元素。
答案 0 :(得分:1)
List
不能同时从多个线程访问。您不能同时添加多个项目的多个线程。尝试这样做可能会导致整个列表损坏,从而导致异常,跳过项目,从未添加新数据或其他类型的未定义行为。
如果要生成要添加到集合的对象,请考虑使用System.Collections.Concurrent
命名空间中的数据结构,例如带有BlockingCollection
或ConcurrentQueue
的{{1}}同时从多个线程。
答案 1 :(得分:0)
您需要使用Thread-Safe集合来执行此操作。查看ConcurrentQueue<T>
或ConcurrentBag<T>
或BlockingCollection<T>
(适用于ProducerConsumer)
http://msdn.microsoft.com/en-us/library/dd997305(v=vs.110).aspx