0

我需要能够以任何顺序(foreach)枚举集合并从任何线程中添加/删除项目。

不需要通过索引直接访问。

我使用什么集合?只是一个列表?如果是这样,我只需要锁定添加/删除还是我也必须锁定 foreach?

我希望在任何线程上都可以使用以下操作。

foreach (var item in myCollection)
{
    // myCollection can be returned in any order.
}

myCollection.Add(item)

var success = myCollection.Remove(item) // returns false if the item does not exist in myCollection
4

1 回答 1

4

您应该将ConcurrentBag用于线程安全的集合,因为Represents a thread-safe, unordered collection of objects它是可用的.NET 4.0

注意:我无法提供更多信息,因为我不知道您将在其中使用它的上下文。提供更多信息以获得更深入的答案。

于 2013-01-10T12:07:12.790 回答