public void Enqueue(object item)
 {
    _queue.EnqueueBlocking(item);
    int count = Interlocked.Increment(ref _itemCount);
    if ( _overThreshold != null )
    {
       if ( count == _upperBound )
       {
          _overThreshold.BeginInvoke(
             count, new AsyncCallback(OnAsyncCallEnd), 
             _overThreshold
             );
       }
    }
 }