public void Dispose() { _clientChannel?.DisposeIfDisposable(); _clientChannel = null; _semaphore?.DisposeIfDisposable(); _cts?.Dispose(); _disposed = true; }