public void Stop() { if (!_isStopped) { _adcSrv.Dispose(); _clientsMonitor.Dispose(); _dataServiceManager.DataBaseFieldsRetrieved -= OnDatabaseFieldsRetrieve; _breakAwayManager.OnBreakAwayListStatusChanged -= OnBreakAwayStatusChanged; _dataServiceManager.Dispose(); _breakAwayManager.Dispose(); lock (_subscribersLock) { foreach (var asyncListServiceClient in _subscribers) { asyncListServiceClient.Dispose(); } _subscribers.Clear(); } _isStopped = true; } }