public void SwitchServiceBus(string serviceBus, string version, string queueType)
        {
            StopMonitoring();

            _mgr.Terminate();

            if (!_serviceBusHistory.Any(s => s.Name == serviceBus && s.Version != version))
            {
                CreateServiceBusManager(serviceBus, version, queueType);
            }
            else
            {
                throw new RestartRequiredException();
            }

            _serviceBusHistory.Add(ServiceBusInfo.Create(serviceBus, version, queueType));
        }
        private void CreateServiceBusManager(string serviceBus, string version, string queueType)
        {
            _mgr = ServiceBusFactory.CreateManager(serviceBus, version, queueType);
            _mgr.ErrorOccured   += System_ErrorOccured;
            _mgr.WarningOccured += System_WarningOccured;
            _mgr.ItemsChanged   += System_ItemsChanged;

            var cmdSender = (_mgr as ISendCommand);

            if (cmdSender != null)
            {
                cmdSender.CommandContentFormat = Config.CurrentServer.CommandContentType;
            }

            lock (_itemsLock)
                _items.Clear();

            _mgr.Initialize(Config.CurrentServer.ConnectionSettings, Config.MonitorQueues.Select(mq => new Queue(mq.Name, mq.Type, mq.Color)).ToArray(), _monitorState);

            CanSendCommand       = (_mgr as ISendCommand) != null;
            CanViewSubscriptions = (_mgr as IViewSubscriptions) != null;

            _serviceBusHistory.Add(ServiceBusInfo.Create(serviceBus, version, queueType));
        }