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");
             }
         }
     }
 }