2013-06-24 3 views
3

Замечания MSDN в http://msdn.microsoft.com/en-us/library/dd267312.aspx состоянии, ...Действительно ли GetConsumingEnumerable удаляет элемент из BlockingCollection?

«Тип коллекции по умолчанию для BlockingCollection является ConcurrentQueue»

Означает ли это, что в то время как я бегу «GetConsumingEnumerable()» на сборе, деталь вытащил выгружается из очереди и после использования будет отмечен для GC?

Другими словами ... В следующем фрагменте

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

, что происходит с пункта после итерации цикла?

+1

Что произошло, когда вы пробовали? – dtb

ответ

5

Элементы будут удалены из коллекции, и, если нет других ссылок на них, они будут иметь право на сбор.

Из документации GetConsumingEnumerable:

Возвращаемое значение
Тип: System.Collections.Generic.IEnumerable<T>
IEnumerable<T>, который удаляет и возвращает элементы из коллекции.

(курсив мой)

+1

Ах, не знаю, как я это пропустил. Благодаря! – Dabloons