<PackageReference Include="NETStandard.Library" Version="2.0.1" />

System.Collections.Concurrent.BlockingCollection<T>

namespace System.Collections.Concurrent { public class BlockingCollection<T> : IEnumerable<T>, IEnumerable, IReadOnlyCollection<T>, ICollection, IDisposable { public int BoundedCapacity { get; } public int Count { get; } public bool IsAddingCompleted { get; } public bool IsCompleted { get; } public BlockingCollection(); public BlockingCollection(IProducerConsumerCollection<T> collection); public BlockingCollection(IProducerConsumerCollection<T> collection, int boundedCapacity); public BlockingCollection(int boundedCapacity); public void Add(T item); public void Add(T item, CancellationToken cancellationToken); public static int AddToAny(BlockingCollection<T>[] collections, T item); public static int AddToAny(BlockingCollection<T>[] collections, T item, CancellationToken cancellationToken); public void CompleteAdding(); public void CopyTo(T[] array, int index); public void Dispose(); protected virtual void Dispose(bool disposing); public IEnumerable<T> GetConsumingEnumerable(); public IEnumerable<T> GetConsumingEnumerable(CancellationToken cancellationToken); public T Take(); public T Take(CancellationToken cancellationToken); public static int TakeFromAny(BlockingCollection<T>[] collections, out T item); public static int TakeFromAny(BlockingCollection<T>[] collections, out T item, CancellationToken cancellationToken); public T[] ToArray(); public bool TryAdd(T item); public bool TryAdd(T item, int millisecondsTimeout); public bool TryAdd(T item, int millisecondsTimeout, CancellationToken cancellationToken); public bool TryAdd(T item, TimeSpan timeout); public static int TryAddToAny(BlockingCollection<T>[] collections, T item); public static int TryAddToAny(BlockingCollection<T>[] collections, T item, int millisecondsTimeout); public static int TryAddToAny(BlockingCollection<T>[] collections, T item, int millisecondsTimeout, CancellationToken cancellationToken); public static int TryAddToAny(BlockingCollection<T>[] collections, T item, TimeSpan timeout); public bool TryTake(out T item); public bool TryTake(out T item, int millisecondsTimeout); public bool TryTake(out T item, int millisecondsTimeout, CancellationToken cancellationToken); public bool TryTake(out T item, TimeSpan timeout); public static int TryTakeFromAny(BlockingCollection<T>[] collections, out T item); public static int TryTakeFromAny(BlockingCollection<T>[] collections, out T item, int millisecondsTimeout); public static int TryTakeFromAny(BlockingCollection<T>[] collections, out T item, int millisecondsTimeout, CancellationToken cancellationToken); public static int TryTakeFromAny(BlockingCollection<T>[] collections, out T item, TimeSpan timeout); } }