public bool TryAddCount(int signalCount) { if (signalCount <= 0) { throw new ArgumentOutOfRangeException("signalCount"); } else { CheckDisposed(); int lastValue; if (ThreadingHelper.SpinWaitRelativeExchangeBounded(ref _currentCount, signalCount, 1, int.MaxValue, out lastValue)) { return(true); } else { if (lastValue < 1) { return(false); } else { throw new InvalidOperationException("Max"); } } } }