public BlockingList(BorrowStrategy strategy) { this.Strategy = strategy; this._stack = this.GetInnerCollection(strategy); this._blockingCollection = new BlockingCollection <T>(this._stack); this._deleted = new HashSet <T>(); }
private bool TryPeek(BorrowStrategy strategy, out T item) { switch (strategy) { case BorrowStrategy.LIFO: return(((ConcurrentStack <T>)_stack).TryPeek(out item)); case BorrowStrategy.FIFO: return(((ConcurrentQueue <T>)_stack).TryPeek(out item)); case BorrowStrategy.Random: default: return(((ConcurrentBag <T>)_stack).TryPeek(out item)); } }
private IProducerConsumerCollection <T> GetInnerCollection(BorrowStrategy strategy) { switch (strategy) { case BorrowStrategy.LIFO: return(new ConcurrentStack <T>()); case BorrowStrategy.FIFO: return(new ConcurrentQueue <T>()); case BorrowStrategy.Random: default: return(new ConcurrentBag <T>()); } }