public OperationContext(CountdownEvent countdownEvent, ConcurrentOperationManager manager)
 {
     _countdownEvent = countdownEvent;
     _countdownEvent.AddCount();
     manager.OnOperationContextCreated(EventArgs.Empty);
     if(manager._isDisposed)
     {
         Dispose();
         throw new ObjectDisposedException(manager._owningType);
     }
 }
        public RabbitMQReader(RabbitMQReaderSetup setup, bool cloneSetup)
        {
            MethodInvocationTrace.Write();
            _setup = cloneSetup ? setup.Clone() : setup;
            _invocationTracker = new ConcurrentOperationManager(GetType().FullName);
            _conn = RabbitMQReaderConnection.Create(_setup, false);
            _deleteQueue = !_setup.IsDurable;

            _throttler = (_setup.Options == null)
                ? NoOpDequeueThrottler.Instance
                : _setup.Options.DequeueThrottlerFactory.Create(_setup.Exchange, _setup.QueueName);
        }