首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从ConcurrentBag中删除所有项目?

如何从ConcurrentBag中删除所有项目?
EN

Stack Overflow用户
提问于 2011-03-21 20:01:01
回答 5查看 49.9K关注 0票数 84

如何清除ConcurrentBag?它没有任何像ClearRemoveAll这样的方法...

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-21 20:06:42

尽管由于潜在的竞态条件,它可能不完全清楚,但这就足够了:

代码语言:javascript
复制
while (!myBag.IsEmpty) 
{
   myBag.TryTake(out T _);
}
票数 39
EN

Stack Overflow用户

发布于 2013-06-27 02:04:08

选择的答案是一种变通方法,所以我添加了我自己的变通方法。

我的解决方案是查看System.Collections.Concurrent名称空间中的所有可用集合,找到一个可以轻松清除集合中所有元素的集合。

ConcurrentStack类有一个Clear()方法,该方法删除集合中的所有元素。事实上,它是名称空间(目前)中唯一具有此功能的集合。是的,你必须使用Push(T element)而不是Add(T element),但坦率地说,这是值得节省的时间。

票数 26
EN

Stack Overflow用户

发布于 2014-09-12 21:01:50

本着变通的精神..ConcurrentDictionary<T, bool>具有原子清晰度,但也允许您快速检查键是否存在。“‘Quickly”当然是一个相对的术语,但根据您的使用情况,它可能比枚举大型堆栈更快。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5377296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档