BlockingCollection<T>.TryTake Method (T, TimeSpan)

.NET Framework (current version)

Tries to remove an item from the BlockingCollection<T> in the specified time period.

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

public bool TryTake(
	out T item,
	TimeSpan timeout


Type: T

The item to be removed from the collection.

Type: System.TimeSpan

An object that represents the number of milliseconds to wait, or an object that represents -1 milliseconds to wait indefinitely.

Return Value

Type: System.Boolean

true if an item could be removed from the collection within the specified time; otherwise, false.

Exception Condition

The BlockingCollection<T> has been disposed.


timeout is a negative number other than -1 milliseconds, which represents an infinite time-out.


timeout is greater than MaxValue.


The underlying collection was modified outside of this BlockingCollection<T> instance.

The order in which an item is removed depends on the type of collection used to create the BlockingCollection<T> instance. When you create a BlockingCollection<T> object, you can specify 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>.

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1
Return to top