public void Dispose() { DisposeLock.EnterWriteLock(); try { if (_isDisposed) { return; } _isDisposed = true; _consumer.Dispose(); while (!_subscribers.IsEmpty) { var code = _subscribers.Keys.FirstOrDefault(); if (code != null && _subscribers.TryRemove(code, out var source)) { source.TrySetCanceled(); } } } finally { DisposeLock.ExitWriteLock(); } }
public void Dispose() => _consumer.Dispose();