【问题标题】:Does GetConsumingEnumerable actually remove an item from a BlockingCollection?GetConsumingEnumerable 是否真的从 BlockingCollection 中删除了一个项目?
【发布时间】:2013-06-25 00:29:31
【问题描述】:

http://msdn.microsoft.com/en-us/library/dd267312.aspx 的 MSDN 评论指出...

"BlockingCollection 的默认集合类型是 ConcurrentQueue"

这是否意味着当我在集合上运行“GetConsumingEnumerable()”时,拉出的项目正在从队列中出列,使用后将被标记为 GC?

也就是说……在下面的sn-p中,

foreach (var item in collection.GetConsumingEnumerable())
        {
            //do something with item
        }

循环迭代后项目会发生什么?

【问题讨论】:

  • 你尝试的时候发生了什么?

标签: c# collections blockingcollection


【解决方案1】:

这些项目将从集合中删除,如果不存在对它们的其他引用,则它们将有资格被收集。

来自GetConsumingEnumerable的文档:

返回值
类型:System.Collections.Generic.IEnumerable<T>
IEnumerable<T>,用于从集合中删除和返回项目。

(我的重点)

【讨论】:

  • 啊,不知道我怎么错过了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2022-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多