public void Stop() { ThrowIfDisposed(); if (!_running) return; if (_cancelTokenSource != null) { _cancelTokenSource.Cancel(); _cancelTokenSource.Dispose(); _running = false; } }