does anyone know if, when iterating on a C# BlockingCollection<>, the elements are taken from the collection, in the same way that BlockingCollection.Take() does for example?
BlockingCollection<int> q = new BlockingCollection<int>();
[...]
foreach(int i in q)
{
//does q still contain i?
}
Thanks
EDIT: Of course I meant BlockingCollection, but for some reason got BlockingQueue in my head and used that.
The BlockingCollection<T>
enumerator does NOT remove items from the collection.
However, the enumerator returned from BlockingCollection<T>.GetConsumingEnumerable()
DOES remove items from the collection.