<PackageReference Include="Relativity.Transfer.Client" Version="7.1.29" />

AutoDetachObserver<T>

sealed class AutoDetachObserver<T> : ObserverBase<T>
using System.Reactive.Disposables; namespace System.Reactive { internal sealed class AutoDetachObserver<T> : ObserverBase<T> { private readonly IObserver<T> _observer; private readonly SingleAssignmentDisposable _disposable = new SingleAssignmentDisposable(); public IDisposable Disposable { set { _disposable.Disposable = value; } } public AutoDetachObserver(IObserver<T> observer) { _observer = observer; } protected override void OnNextCore(T value) { bool flag = false; try { _observer.OnNext(value); flag = true; } finally { if (!flag) Dispose(); } } protected override void OnErrorCore(Exception exception) { try { _observer.OnError(exception); } finally { Dispose(); } } protected override void OnCompletedCore() { try { _observer.OnCompleted(); } finally { Dispose(); } } protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) _disposable.Dispose(); } } }