/// <summary> /// Releases all managed resources. /// </summary> /// <param name="calledFromFinalizer">Specifies if this method is called from finalizer or not</param> private void Dispose(bool calledFromFinalizer) { if (!_isDisposed) { OnDisposing(new EventArgs()); _isDisposed = true; _hosts.Remove(this); StopListening(); if (_dispatcher != null) { _dispatcher = null; } if (_sessionManager != null) { _sessionManager.Dispose(); _sessionManager = null; } if (this.Authenticate != null) { this.Authenticate = null; } if (_authProvider != null) { _authProvider = null; } if (_catalog != null) { if (_catalog.DisposeWithHost) { _catalog.Dispose(); } _catalog = null; } if (!calledFromFinalizer) { GC.SuppressFinalize(this); } } }