ConcurrentBag如何更改对象属性

时间:2012-09-05 12:56:31

标签: c# synchronization thread-safety

我有一个属性的QueueItem对象。我需要在ConcurrentBag列表中找到它并更改它的值。怎么做?

QueueItemList = new ConcurrentBag<QueueItem>()

我可以使用linq来查询ConcurrentBag中的对象,如下所示

MyItem =  QueueItemList.Where(match);
MyItem.Status = changeThis;

但这个线程安全吗?

1 个答案:

答案 0 :(得分:1)

Where操作或任何其他集合操作是线程安全的,例如,如果它不是线程安全的,那么Where操作中可能存在错误,如果有人在其他线程中更改了项目数在同一时间,但更改Status属性与集合无关,并且它不是线程安全的。