public async Task StopAsync() { _cancellationTokenSource?.Cancel(false); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; foreach (var adapter in _adapters) { adapter.ClientAccepted -= OnClientAccepted; await adapter.StopAsync(); } await _clientSessionsManager.StopAsync(); _logger.LogInformation("Stopped."); }
public async Task StopAsync() { try { if (_cancellationTokenSource == null) { return; } _cancellationTokenSource.Cancel(false); _cancellationTokenSource.Dispose(); foreach (var adapter in _adapters) { adapter.ClientAccepted -= OnClientAccepted; await adapter.StopAsync(); } await _clientSessionsManager.StopAsync(); _logger.Info <MqttServer>("Stopped."); } finally { _cancellationTokenSource = null; _retainedMessagesManager = null; if (_clientSessionsManager != null) { _clientSessionsManager.ApplicationMessageReceived -= OnApplicationMessageReceived; _clientSessionsManager.ClientConnected -= OnClientConnected; _clientSessionsManager.ClientDisconnected -= OnClientDisconnected; } _clientSessionsManager = null; } }