当一个线程正在添加或删除
ConcurrentBag<T>
的元素,而另一个线程正在枚举此包时,会发生什么情况?新元素也会在枚举中显示吗?已删除的元素不会出现吗?ConcurrentBag<T>
的元素,而另一个线程正在枚举此包时,会发生什么情况?新元素也会在枚举中显示吗?已删除的元素不会出现吗?有人可以阅读精细手册以了解:
ConcurrentBag<T>.GetEnumerator
方法枚举表示包内容的瞬时快照。它不反映在调用 GetEnumerator 之后对集合所做的任何更新。该枚举器可安全地与从包中读取和写入并发使用。
重点标记为我的。
ConcurrentBag
类的特点:ConcurrentBag<T>
时,将创建当前状态的快照。枚举将只显示在枚举开始时存在于包中的元素。