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