public Task Stop() { if (tokenSource == null) { return TaskEx.CompletedTask; } tokenSource.Cancel(); tokenSource.Dispose(); return task ?? TaskEx.CompletedTask; }