修改concurrentbag + C#中的项目

时间:2011-05-02 08:29:35

标签: c#

我在一个并发包中保留了一组对象。根据收到的输入,我想修改这些对象。如何才能做到这一点?我不能使用trytake,因为它正在删除该项目。我不确定trypeek是否会遍历该集合。 OTOH,将项目复制到数组是行不通的,因为这些对象是只读的。请帮忙

2 个答案:

答案 0 :(得分:2)

您无法就地修改项目,必须将其取出,修改并重新放入。

答案 1 :(得分:1)

我认为你必须推出自己的线程保存colletction。 TryPeek返回一个项目,但决不会确保没有其他线程修改它。

此外,没有线程安全的迭代。

见这里:http://www.codethinked.com/net-40-and-system_collections_concurrent_concurrentbag

HTH

马里奥