我想要一个List<T>作为属性的实现,可以毫无疑问地在线程安全地使用它。
List<T>
像这样:
private List<T> _list; private List<T> MyT { get { // return a copy of _list; } set { _list = value; } }
似乎仍然需要返回集合的副本(克隆的),因此,如果在某个地方我们正在迭代集合并且同时设置了集合,则不会引发异常。
如何实现线程安全的集合属性?
如果您以.Net 4为目标,则System.Collections.Concurrent命名空间中有一些选项
ConcurrentBag<T>在这种情况下,您可以使用List<T>
ConcurrentBag<T>