Export (0) Print
Expand All

BlockingCollection<T>.GetConsumingEnumerable Method

Provides a consuming IEnumerator<T> for items in the collection.

Namespace:  System.Collections.Concurrent
Assembly:  System (in System.dll)

public IEnumerable<T> GetConsumingEnumerable()

Return Value

Type: System.Collections.Generic.IEnumerable<T>
An IEnumerable<T> that removes and returns items from the collection.


The BlockingCollection<T> has been disposed.

The following example shows how to use the GetConsumingEnumerable method:

class ConsumingEnumerableDemo
    // Demonstrates: 
    //      BlockingCollection<T>.Add() 
    //      BlockingCollection<T>.CompleteAdding() 
    //      BlockingCollection<T>.GetConsumingEnumerable() 
    public static void BC_GetConsumingEnumerable()
        using (BlockingCollection<int> bc = new BlockingCollection<int>())

            // Kick off a producer task
            Task.Factory.StartNew(() =>
                for (int i = 0; i < 10; i++)
                    Thread.Sleep(100); // sleep 100 ms between adds

                // Need to do this to keep foreach below from hanging

            // Now consume the blocking collection with foreach. 
            // Use bc.GetConsumingEnumerable() instead of just bc because the 
            // former will block waiting for completion and the latter will 
            // simply take a snapshot of the current state of the underlying collection. 
            foreach (var item in bc.GetConsumingEnumerable())

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1
© 2015 Microsoft