BlockingCollection<T>::TakeFromAny Method (array<BlockingCollection<T>^>^, T%, CancellationToken)
Takes an item from any one of the specified BlockingCollection<T> instances while observing the specified cancellation token.
Assembly: System (in System.dll)
public: static int TakeFromAny( array<BlockingCollection<T>^>^ collections, [OutAttribute] T% item, CancellationToken cancellationToken )
Parameters
- collections
-
Type:
array<System.Collections.Concurrent::BlockingCollection<T>^>^
The array of collections.
- item
-
Type:
T%
The item removed from one of the collections.
- cancellationToken
-
Type:
System.Threading::CancellationToken
A cancellation token to observe.
Return Value
Type: System::Int32The index of the collection in the collections array from which the item was removed.
| Exception | Condition |
|---|---|
| OperationCanceledException | If the CancellationToken is canceled. |
| InvalidOperationException | At least one of the underlying collections was modified outside of its BlockingCollection<T> instance. |
| ArgumentNullException | The collections argument is null. |
| ArgumentOutOfRangeException | The count of collections is greater than the maximum size of 62 for STA and 63 for MTA. |
| ArgumentException | The collections argument is a 0-length array or contains a null element, or CompleteAdding has been called on the collection. |
| ObjectDisposedException | At least one of the BlockingCollection<T> instances has been disposed. |
A call to TakeFromAny may block until an item is available to be removed. The method will return early with an OperationCanceledException if the token is canceled.
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1