public ConcurrentBoundedBlockingQueue(IManualResetEvent queueIsFullEvent, TimeSpan waitTimeout, int maxItemCount) : base(maxItemCount) { _queueIsFullEvent = queueIsFullEvent; _waitTimeout = waitTimeout; _queueIsFullEvent.Reset(); }
public void Reset() { lock (syncRoot) { Value = default(T); IsSet = false; } waitHandle.Reset(); }
public override bool TryEnqueue(T value) { while (!base.TryEnqueue(value)) { if (!_queueIsFullEvent.Wait(_waitTimeout)) { return(false); } _queueIsFullEvent.Reset(); } return(true); }