BlockingCollection<T> Class
Provides blocking and bounding capabilities for thread-safe collections that implement IProducerConsumerCollection<T>.
Namespace: System.Collections.Concurrent
Assembly: System (in System.dll)
The BlockingCollection<T> type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | BlockingCollection<T>() | Initializes a new instance of the BlockingCollection<T> class without an upper-bound. |
![]() ![]() ![]() | BlockingCollection<T>(Int32) | Initializes a new instance of the BlockingCollection<T> class with the specified upper-bound. |
![]() ![]() ![]() | BlockingCollection<T>(IProducerConsumerCollection<T>) | Initializes a new instance of the BlockingCollection<T> class without an upper-bound and using the provided IProducerConsumerCollection<T> as its underlying data store. |
![]() ![]() ![]() | BlockingCollection<T>(IProducerConsumerCollection<T>, Int32) | Initializes a new instance of the BlockingCollection<T> class with the specified upper-bound and using the provided IProducerConsumerCollection<T> as its underlying data store. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | BoundedCapacity | Gets the bounded capacity of this BlockingCollection<T> instance. |
![]() ![]() ![]() | Count | Gets the number of items contained in the BlockingCollection<T>. |
![]() ![]() ![]() | IsAddingCompleted | Gets whether this BlockingCollection<T> has been marked as complete for adding. |
![]() ![]() ![]() | IsCompleted | Gets whether this BlockingCollection<T> has been marked as complete for adding and is empty. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | Add(T) | Adds the item to the BlockingCollection<T>. |
![]() ![]() ![]() | Add(T, CancellationToken) | Adds the item to the BlockingCollection<T>. |
![]() ![]() ![]() ![]() | AddToAny(BlockingCollection<T>[], T) | Adds the specified item to any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | AddToAny(BlockingCollection<T>[], T, CancellationToken) | Adds the specified item to any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() | CompleteAdding | Marks the BlockingCollection<T> instances as not accepting any more additions. |
![]() ![]() ![]() | CopyTo | Copies all of the items in the BlockingCollection<T> instance to a compatible one-dimensional array, starting at the specified index of the target array. |
![]() ![]() ![]() | Dispose() | Releases all resources used by the current instance of the BlockingCollection<T> class. |
![]() ![]() ![]() | Dispose(Boolean) | Releases resources used by the BlockingCollection<T> instance. |
![]() ![]() ![]() | Equals(Object) | Determines whether the specified object is equal to the current object. (Inherited from Object.) |
![]() ![]() ![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() ![]() ![]() | GetConsumingEnumerable() | Provides a consuming IEnumerator<T> for items in the collection. |
![]() ![]() ![]() | GetConsumingEnumerable(CancellationToken) | Provides a consuming IEnumerable<T> for items in the collection. |
![]() ![]() ![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() ![]() ![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() ![]() ![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() ![]() ![]() | Take() | Removes an item from the BlockingCollection<T>. |
![]() ![]() ![]() | Take(CancellationToken) | Removes an item from the BlockingCollection<T>. |
![]() ![]() ![]() ![]() | TakeFromAny(BlockingCollection<T>[], T) | Takes an item from any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TakeFromAny(BlockingCollection<T>[], T, CancellationToken) | Takes an item from any one of the specified BlockingCollection<T> instances while observing the specified cancellation token. |
![]() ![]() ![]() | ToArray | Copies the items from the BlockingCollection<T> instance into a new array. |
![]() ![]() ![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
![]() ![]() ![]() | TryAdd(T) | Tries to add the specified item to the BlockingCollection<T>. |
![]() ![]() ![]() | TryAdd(T, Int32) | Tries to add the specified item to the BlockingCollection<T> within the specified time period. |
![]() ![]() ![]() | TryAdd(T, TimeSpan) | Tries to add the specified item to the BlockingCollection<T>. |
![]() ![]() ![]() | TryAdd(T, Int32, CancellationToken) | Tries to add the specified item to the BlockingCollection<T> within the specified time period, while observing a cancellation token. |
![]() ![]() ![]() ![]() | TryAddToAny(BlockingCollection<T>[], T) | Tries to add the specified item to any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TryAddToAny(BlockingCollection<T>[], T, Int32) | Tries to add the specified item to any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TryAddToAny(BlockingCollection<T>[], T, TimeSpan) | Tries to add the specified item to any one of the specified BlockingCollection<T> instances while observing the specified cancellation token. |
![]() ![]() ![]() ![]() | TryAddToAny(BlockingCollection<T>[], T, Int32, CancellationToken) | Tries to add the specified item to any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() | TryTake(T) | Tries to remove an item from the BlockingCollection<T>. |
![]() ![]() ![]() | TryTake(T, Int32) | Tries to remove an item from the BlockingCollection<T> in the specified time period. |
![]() ![]() ![]() | TryTake(T, TimeSpan) | Tries to remove an item from the BlockingCollection<T> in the specified time period. |
![]() ![]() ![]() | TryTake(T, Int32, CancellationToken) | Tries to remove an item from the BlockingCollection<T> in the specified time period while observing a cancellation token. |
![]() ![]() ![]() ![]() | TryTakeFromAny(BlockingCollection<T>[], T) | Tries to remove an item from any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TryTakeFromAny(BlockingCollection<T>[], T, Int32) | Tries to remove an item from any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TryTakeFromAny(BlockingCollection<T>[], T, TimeSpan) | Tries to remove an item from any one of the specified BlockingCollection<T> instances. |
![]() ![]() ![]() ![]() | TryTakeFromAny(BlockingCollection<T>[], T, Int32, CancellationToken) | Tries to remove an item from any one of the specified BlockingCollection<T> instances. |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() | Aggregate<T>(Func<T, T, T>) | Overloaded. Applies an accumulator function over a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Aggregate<T, TAccumulate>(TAccumulate, Func<TAccumulate, T, TAccumulate>) | Overloaded. Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value. (Defined by Enumerable.) |
![]() ![]() ![]() | Aggregate<T, TAccumulate, TResult>(TAccumulate, Func<TAccumulate, T, TAccumulate>, Func<TAccumulate, TResult>) | Overloaded. Applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value, and the specified function is used to select the result value. (Defined by Enumerable.) |
![]() ![]() ![]() | All<T> | Determines whether all elements of a sequence satisfy a condition. (Defined by Enumerable.) |
![]() ![]() ![]() | Any<T>() | Overloaded. Determines whether a sequence contains any elements. (Defined by Enumerable.) |
![]() ![]() ![]() | Any<T>(Func<T, Boolean>) | Overloaded. Determines whether any element of a sequence satisfies a condition. (Defined by Enumerable.) |
![]() ![]() ![]() | AsEnumerable<T> | Returns the input typed as IEnumerable<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | AsParallel() | Overloaded. Enables parallelization of a query. (Defined by ParallelEnumerable.) |
![]() ![]() ![]() | AsParallel<T>() | Overloaded. Enables parallelization of a query. (Defined by ParallelEnumerable.) |
![]() ![]() ![]() | AsQueryable() | Overloaded. Converts an IEnumerable to an IQueryable. (Defined by Queryable.) |
![]() ![]() ![]() | AsQueryable<T>() | Overloaded. Converts a generic IEnumerable<T> to a generic IQueryable<T>. (Defined by Queryable.) |
![]() ![]() ![]() | Average<T>(Func<T, Decimal>) | Overloaded. Computes the average of a sequence of Decimal values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Nullable<Decimal>>) | Overloaded. Computes the average of a sequence of nullable Decimal values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Double>) | Overloaded. Computes the average of a sequence of Double values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Nullable<Double>>) | Overloaded. Computes the average of a sequence of nullable Double values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Int32>) | Overloaded. Computes the average of a sequence of Int32 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Nullable<Int32>>) | Overloaded. Computes the average of a sequence of nullable Int32 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Int64>) | Overloaded. Computes the average of a sequence of Int64 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Nullable<Int64>>) | Overloaded. Computes the average of a sequence of nullable Int64 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Single>) | Overloaded. Computes the average of a sequence of Single values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Average<T>(Func<T, Nullable<Single>>) | Overloaded. Computes the average of a sequence of nullable Single values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Cast<TResult> | Casts the elements of an IEnumerable to the specified type. (Defined by Enumerable.) |
![]() ![]() ![]() | Concat<T> | Concatenates two sequences. (Defined by Enumerable.) |
![]() ![]() ![]() | Contains<T>(T) | Overloaded. Determines whether a sequence contains a specified element by using the default equality comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | Contains<T>(T, IEqualityComparer<T>) | Overloaded. Determines whether a sequence contains a specified element by using a specified IEqualityComparer<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | Count<T>() | Overloaded. Returns the number of elements in a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Count<T>(Func<T, Boolean>) | Overloaded. Returns a number that represents how many elements in the specified sequence satisfy a condition. (Defined by Enumerable.) |
![]() ![]() ![]() | DefaultIfEmpty<T>() | Overloaded. Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty. (Defined by Enumerable.) |
![]() ![]() ![]() | DefaultIfEmpty<T>(T) | Overloaded. Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty. (Defined by Enumerable.) |
![]() ![]() ![]() | Distinct<T>() | Overloaded. Returns distinct elements from a sequence by using the default equality comparer to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | Distinct<T>(IEqualityComparer<T>) | Overloaded. Returns distinct elements from a sequence by using a specified IEqualityComparer<T> to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | ElementAt<T> | Returns the element at a specified index in a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | ElementAtOrDefault<T> | Returns the element at a specified index in a sequence or a default value if the index is out of range. (Defined by Enumerable.) |
![]() ![]() ![]() | Except<T>(IEnumerable<T>) | Overloaded. Produces the set difference of two sequences by using the default equality comparer to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | Except<T>(IEnumerable<T>, IEqualityComparer<T>) | Overloaded. Produces the set difference of two sequences by using the specified IEqualityComparer<T> to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | First<T>() | Overloaded. Returns the first element of a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | First<T>(Func<T, Boolean>) | Overloaded. Returns the first element in a sequence that satisfies a specified condition. (Defined by Enumerable.) |
![]() ![]() ![]() | FirstOrDefault<T>() | Overloaded. Returns the first element of a sequence, or a default value if the sequence contains no elements. (Defined by Enumerable.) |
![]() ![]() ![]() | FirstOrDefault<T>(Func<T, Boolean>) | Overloaded. Returns the first element of the sequence that satisfies a condition or a default value if no such element is found. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey>(Func<T, TKey>) | Overloaded. Groups the elements of a sequence according to a specified key selector function. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and compares the keys by using a specified comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and projects the elements for each group by using a specified function. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TResult>(Func<T, TKey>, Func<TKey, IEnumerable<T>, TResult>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>) | Overloaded. Groups the elements of a sequence according to a key selector function. The keys are compared by using a comparer and each group's elements are projected by using a specified function. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TResult>(Func<T, TKey>, Func<TKey, IEnumerable<T>, TResult>, IEqualityComparer<TKey>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. The keys are compared by using a specified comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TElement, TResult>(Func<T, TKey>, Func<T, TElement>, Func<TKey, IEnumerable<TElement>, TResult>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. The elements of each group are projected by using a specified function. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupBy<T, TKey, TElement, TResult>(Func<T, TKey>, Func<T, TElement>, Func<TKey, IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) | Overloaded. Groups the elements of a sequence according to a specified key selector function and creates a result value from each group and its key. Key values are compared by using a specified comparer, and the elements of each group are projected by using a specified function. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, IEnumerable<TInner>, TResult>) | Overloaded. Correlates the elements of two sequences based on equality of keys and groups the results. The default equality comparer is used to compare keys. (Defined by Enumerable.) |
![]() ![]() ![]() | GroupJoin<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, IEnumerable<TInner>, TResult>, IEqualityComparer<TKey>) | Overloaded. Correlates the elements of two sequences based on key equality and groups the results. A specified IEqualityComparer<T> is used to compare keys. (Defined by Enumerable.) |
![]() ![]() ![]() | Intersect<T>(IEnumerable<T>) | Overloaded. Produces the set intersection of two sequences by using the default equality comparer to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | Intersect<T>(IEnumerable<T>, IEqualityComparer<T>) | Overloaded. Produces the set intersection of two sequences by using the specified IEqualityComparer<T> to compare values. (Defined by Enumerable.) |
![]() ![]() ![]() | Join<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, TInner, TResult>) | Overloaded. Correlates the elements of two sequences based on matching keys. The default equality comparer is used to compare keys. (Defined by Enumerable.) |
![]() ![]() ![]() | Join<T, TInner, TKey, TResult>(IEnumerable<TInner>, Func<T, TKey>, Func<TInner, TKey>, Func<T, TInner, TResult>, IEqualityComparer<TKey>) | Overloaded. Correlates the elements of two sequences based on matching keys. A specified IEqualityComparer<T> is used to compare keys. (Defined by Enumerable.) |
![]() ![]() ![]() | Last<T>() | Overloaded. Returns the last element of a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Last<T>(Func<T, Boolean>) | Overloaded. Returns the last element of a sequence that satisfies a specified condition. (Defined by Enumerable.) |
![]() ![]() ![]() | LastOrDefault<T>() | Overloaded. Returns the last element of a sequence, or a default value if the sequence contains no elements. (Defined by Enumerable.) |
![]() ![]() ![]() | LastOrDefault<T>(Func<T, Boolean>) | Overloaded. Returns the last element of a sequence that satisfies a condition or a default value if no such element is found. (Defined by Enumerable.) |
![]() ![]() ![]() | LongCount<T>() | Overloaded. Returns an Int64 that represents the total number of elements in a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | LongCount<T>(Func<T, Boolean>) | Overloaded. Returns an Int64 that represents how many elements in a sequence satisfy a condition. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>() | Overloaded. Returns the maximum value in a generic sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Decimal>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum Decimal value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Nullable<Decimal>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum nullable Decimal value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Double>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum Double value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Nullable<Double>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum nullable Double value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Int32>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum Int32 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Nullable<Int32>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum nullable Int32 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Int64>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum Int64 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Nullable<Int64>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum nullable Int64 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Single>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum Single value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T>(Func<T, Nullable<Single>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the maximum nullable Single value. (Defined by Enumerable.) |
![]() ![]() ![]() | Max<T, TResult>(Func<T, TResult>) | Overloaded. Invokes a transform function on each element of a generic sequence and returns the maximum resulting value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>() | Overloaded. Returns the minimum value in a generic sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Decimal>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum Decimal value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Nullable<Decimal>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum nullable Decimal value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Double>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum Double value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Nullable<Double>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum nullable Double value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Int32>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum Int32 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Nullable<Int32>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum nullable Int32 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Int64>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum Int64 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Nullable<Int64>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum nullable Int64 value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Single>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum Single value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T>(Func<T, Nullable<Single>>) | Overloaded. Invokes a transform function on each element of a sequence and returns the minimum nullable Single value. (Defined by Enumerable.) |
![]() ![]() ![]() | Min<T, TResult>(Func<T, TResult>) | Overloaded. Invokes a transform function on each element of a generic sequence and returns the minimum resulting value. (Defined by Enumerable.) |
![]() ![]() ![]() | OfType<TResult> | Filters the elements of an IEnumerable based on a specified type. (Defined by Enumerable.) |
![]() ![]() ![]() | OrderBy<T, TKey>(Func<T, TKey>) | Overloaded. Sorts the elements of a sequence in ascending order according to a key. (Defined by Enumerable.) |
![]() ![]() ![]() | OrderBy<T, TKey>(Func<T, TKey>, IComparer<TKey>) | Overloaded. Sorts the elements of a sequence in ascending order by using a specified comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | OrderByDescending<T, TKey>(Func<T, TKey>) | Overloaded. Sorts the elements of a sequence in descending order according to a key. (Defined by Enumerable.) |
![]() ![]() ![]() | OrderByDescending<T, TKey>(Func<T, TKey>, IComparer<TKey>) | Overloaded. Sorts the elements of a sequence in descending order by using a specified comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | Reverse<T> | Inverts the order of the elements in a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Select<T, TResult>(Func<T, TResult>) | Overloaded. Projects each element of a sequence into a new form. (Defined by Enumerable.) |
![]() ![]() ![]() | Select<T, TResult>(Func<T, Int32, TResult>) | Overloaded. Projects each element of a sequence into a new form by incorporating the element's index. (Defined by Enumerable.) |
![]() ![]() ![]() | SelectMany<T, TResult>(Func<T, IEnumerable<TResult>>) | Overloaded. Projects each element of a sequence to an IEnumerable<T> and flattens the resulting sequences into one sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | SelectMany<T, TResult>(Func<T, Int32, IEnumerable<TResult>>) | Overloaded. Projects each element of a sequence to an IEnumerable<T>, and flattens the resulting sequences into one sequence. The index of each source element is used in the projected form of that element. (Defined by Enumerable.) |
![]() ![]() ![]() | SelectMany<T, TCollection, TResult>(Func<T, Int32, IEnumerable<TCollection>>, Func<T, TCollection, TResult>) | Overloaded. Projects each element of a sequence to an IEnumerable<T>, flattens the resulting sequences into one sequence, and invokes a result selector function on each element therein. The index of each source element is used in the intermediate projected form of that element. (Defined by Enumerable.) |
![]() ![]() ![]() | SelectMany<T, TCollection, TResult>(Func<T, IEnumerable<TCollection>>, Func<T, TCollection, TResult>) | Overloaded. Projects each element of a sequence to an IEnumerable<T>, flattens the resulting sequences into one sequence, and invokes a result selector function on each element therein. (Defined by Enumerable.) |
![]() ![]() ![]() | SequenceEqual<T>(IEnumerable<T>) | Overloaded. Determines whether two sequences are equal by comparing the elements by using the default equality comparer for their type. (Defined by Enumerable.) |
![]() ![]() ![]() | SequenceEqual<T>(IEnumerable<T>, IEqualityComparer<T>) | Overloaded. Determines whether two sequences are equal by comparing their elements by using a specified IEqualityComparer<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | Single<T>() | Overloaded. Returns the only element of a sequence, and throws an exception if there is not exactly one element in the sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Single<T>(Func<T, Boolean>) | Overloaded. Returns the only element of a sequence that satisfies a specified condition, and throws an exception if more than one such element exists. (Defined by Enumerable.) |
![]() ![]() ![]() | SingleOrDefault<T>() | Overloaded. Returns the only element of a sequence, or a default value if the sequence is empty; this method throws an exception if there is more than one element in the sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | SingleOrDefault<T>(Func<T, Boolean>) | Overloaded. Returns the only element of a sequence that satisfies a specified condition or a default value if no such element exists; this method throws an exception if more than one element satisfies the condition. (Defined by Enumerable.) |
![]() ![]() ![]() | Skip<T> | Bypasses a specified number of elements in a sequence and then returns the remaining elements. (Defined by Enumerable.) |
![]() ![]() ![]() | SkipWhile<T>(Func<T, Boolean>) | Overloaded. Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. (Defined by Enumerable.) |
![]() ![]() ![]() | SkipWhile<T>(Func<T, Int32, Boolean>) | Overloaded. Bypasses elements in a sequence as long as a specified condition is true and then returns the remaining elements. The element's index is used in the logic of the predicate function. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Decimal>) | Overloaded. Computes the sum of the sequence of Decimal values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Nullable<Decimal>>) | Overloaded. Computes the sum of the sequence of nullable Decimal values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Double>) | Overloaded. Computes the sum of the sequence of Double values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Nullable<Double>>) | Overloaded. Computes the sum of the sequence of nullable Double values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Int32>) | Overloaded. Computes the sum of the sequence of Int32 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Nullable<Int32>>) | Overloaded. Computes the sum of the sequence of nullable Int32 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Int64>) | Overloaded. Computes the sum of the sequence of Int64 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Nullable<Int64>>) | Overloaded. Computes the sum of the sequence of nullable Int64 values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Single>) | Overloaded. Computes the sum of the sequence of Single values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Sum<T>(Func<T, Nullable<Single>>) | Overloaded. Computes the sum of the sequence of nullable Single values that are obtained by invoking a transform function on each element of the input sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | Take<T> | Returns a specified number of contiguous elements from the start of a sequence. (Defined by Enumerable.) |
![]() ![]() ![]() | TakeWhile<T>(Func<T, Boolean>) | Overloaded. Returns elements from a sequence as long as a specified condition is true. (Defined by Enumerable.) |
![]() ![]() ![]() | TakeWhile<T>(Func<T, Int32, Boolean>) | Overloaded. Returns elements from a sequence as long as a specified condition is true. The element's index is used in the logic of the predicate function. (Defined by Enumerable.) |
![]() ![]() ![]() | ToArray<T> | Creates an array from a IEnumerable<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | ToDictionary<T, TKey>(Func<T, TKey>) | Overloaded. Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function. (Defined by Enumerable.) |
![]() ![]() ![]() | ToDictionary<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | Overloaded. Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function and key comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | ToDictionary<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>) | Overloaded. Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to specified key selector and element selector functions. (Defined by Enumerable.) |
![]() ![]() ![]() | ToDictionary<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>) | Overloaded. Creates a Dictionary<TKey, TValue> from an IEnumerable<T> according to a specified key selector function, a comparer, and an element selector function. (Defined by Enumerable.) |
![]() ![]() ![]() | ToList<T> | Creates a List<T> from an IEnumerable<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | ToLookup<T, TKey>(Func<T, TKey>) | Overloaded. Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function. (Defined by Enumerable.) |
![]() ![]() ![]() | ToLookup<T, TKey>(Func<T, TKey>, IEqualityComparer<TKey>) | Overloaded. Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function and key comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | ToLookup<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>) | Overloaded. Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to specified key selector and element selector functions. (Defined by Enumerable.) |
![]() ![]() ![]() | ToLookup<T, TKey, TElement>(Func<T, TKey>, Func<T, TElement>, IEqualityComparer<TKey>) | Overloaded. Creates a Lookup<TKey, TElement> from an IEnumerable<T> according to a specified key selector function, a comparer and an element selector function. (Defined by Enumerable.) |
![]() ![]() ![]() | Union<T>(IEnumerable<T>) | Overloaded. Produces the set union of two sequences by using the default equality comparer. (Defined by Enumerable.) |
![]() ![]() ![]() | Union<T>(IEnumerable<T>, IEqualityComparer<T>) | Overloaded. Produces the set union of two sequences by using a specified IEqualityComparer<T>. (Defined by Enumerable.) |
![]() ![]() ![]() | Where<T>(Func<T, Boolean>) | Overloaded. Filters a sequence of values based on a predicate. (Defined by Enumerable.) |
![]() ![]() ![]() | Where<T>(Func<T, Int32, Boolean>) | Overloaded. Filters a sequence of values based on a predicate. Each element's index is used in the logic of the predicate function. (Defined by Enumerable.) |
![]() ![]() ![]() | Zip<T, TSecond, TResult> | Applies a specified function to the corresponding elements of two sequences, producing a sequence of the results. (Defined by Enumerable.) |
| Name | Description | |
|---|---|---|
![]() ![]() ![]() ![]() | ICollection.CopyTo | Copies all of the items in the BlockingCollection<T> instance to a compatible one-dimensional array, starting at the specified index of the target array. |
![]() ![]() ![]() ![]() | ICollection.IsSynchronized | Gets a value indicating whether access to the ICollection is synchronized. |
![]() ![]() ![]() ![]() | ICollection.SyncRoot | Gets an object that can be used to synchronize access to the ICollection. This property is not supported. |
![]() ![]() ![]() ![]() | IEnumerable<T>.GetEnumerator | Provides an IEnumerator<T> for items in the collection. |
![]() ![]() ![]() ![]() | IEnumerable.GetEnumerator | Provides an IEnumerator for items in the collection. |
IProducerConsumerCollection<T> represents a collection that allows for thread-safe adding and removing of data. BlockingCollection<T> is used as a wrapper for an IProducerConsumerCollection<T> instance, allowing removal attempts from the collection to block until data is available to be removed. Similarly, a BlockingCollection<T> can be created to enforce an upper-bound on the number of data elements allowed in the IProducerConsumerCollection<T>; addition attempts to the collection may then block until space is available to store the added items. In this manner, BlockingCollection<T> is similar to a traditional blocking queue data structure, except that the underlying data storage mechanism is abstracted away as an IProducerConsumerCollection<T>.
When you create a BlockingCollection<T> object, you can specify not only the bounded capacity but also the type of collection to use. For example, you could specify a ConcurrentQueue<T> object for first in, first out (FIFO) behavior, or a ConcurrentStack<T> object for last in, first out (LIFO) behavior. You can use any collection class that implements the IProducerConsumerCollection<T> interface. The default collection type for BlockingCollection<T> is ConcurrentQueue<T>.
Do not modify the underlying collection directly. Use the BlockingCollection<T> methods to add or remove elements. The BlockingCollection<T> object can become corrupted if you change the underlying collection directly.
Note |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: Synchronization | ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The following example shows how to add and take items concurrently from a blocking collection:
using System; using System.Collections; using System.Collections.Generic; using System.Collections.Concurrent; using System.Linq; using System.Threading; using System.Threading.Tasks; class BlockingCollectionDemo { static void Main() { AddTakeDemo.BC_AddTakeCompleteAdding(); TryTakeDemo.BC_TryTake(); FromToAnyDemo.BC_FromToAny(); ConsumingEnumerableDemo.BC_GetConsumingEnumerable(); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } class AddTakeDemo { // Demonstrates: // BlockingCollection<T>.Add() // BlockingCollection<T>.Take() // BlockingCollection<T>.CompleteAdding() public static void BC_AddTakeCompleteAdding() { using (BlockingCollection<int> bc = new BlockingCollection<int>()) { // Spin up a Task to populate the BlockingCollection using (Task t1 = Task.Factory.StartNew(() => { bc.Add(1); bc.Add(2); bc.Add(3); bc.CompleteAdding(); })) { // Spin up a Task to consume the BlockingCollection using (Task t2 = Task.Factory.StartNew(() => { try { // Consume consume the BlockingCollection while (true) Console.WriteLine(bc.Take()); } catch (InvalidOperationException) { // An InvalidOperationException means that Take() was called on a completed collection Console.WriteLine("That's All!"); } })) Task.WaitAll(t1, t2); } } } } class TryTakeDemo { // Demonstrates: // BlockingCollection<T>.Add() // BlockingCollection<T>.CompleteAdding() // BlockingCollection<T>.TryTake() // BlockingCollection<T>.IsCompleted public static void BC_TryTake() { // Construct and fill our BlockingCollection using (BlockingCollection<int> bc = new BlockingCollection<int>()) { int NUMITEMS = 10000; for (int i = 0; i < NUMITEMS; i++) bc.Add(i); bc.CompleteAdding(); int outerSum = 0; // Delegate for consuming the BlockingCollection and adding up all items Action action = () => { int localItem; int localSum = 0; while (bc.TryTake(out localItem)) localSum += localItem; Interlocked.Add(ref outerSum, localSum); }; // Launch three parallel actions to consume the BlockingCollection Parallel.Invoke(action, action, action); Console.WriteLine("Sum[0..{0}) = {1}, should be {2}", NUMITEMS, outerSum, (NUMITEMS / 2) * (NUMITEMS - 1)); Console.WriteLine("bc.IsCompleted = {0} (should be true)", bc.IsCompleted); } } } class FromToAnyDemo { // Demonstrates: // Bounded BlockingCollection<T> // BlockingCollection<T>.TryAddToAny() // BlockingCollection<T>.TryTakeFromAny() public static void BC_FromToAny() { BlockingCollection<int>[] bcs = new BlockingCollection<int>[2]; bcs[0] = new BlockingCollection<int>(5); // collection bounded to 5 items bcs[1] = new BlockingCollection<int>(5); // collection bounded to 5 items // Should be able to add 10 items w/o blocking int numFailures = 0; for (int i = 0; i < 10; i++) { if (BlockingCollection<int>.TryAddToAny(bcs, i) == -1) numFailures++; } Console.WriteLine("TryAddToAny: {0} failures (should be 0)", numFailures); // Should be able to retrieve 10 items int numItems = 0; int item; while (BlockingCollection<int>.TryTakeFromAny(bcs, out item) != -1) numItems++; Console.WriteLine("TryTakeFromAny: retrieved {0} items (should be 10)", numItems); } } 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++) { bc.Add(i); Thread.Sleep(100); // sleep 100 ms between adds } // Need to do this to keep foreach below from hanging bc.CompleteAdding(); }); // 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()) { Console.WriteLine(item); } } } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.










Note