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

SerialDisposable

public sealed class SerialDisposable : ICancelable, IDisposable
namespace System.Reactive.Disposables { public sealed class SerialDisposable : ICancelable, IDisposable { private readonly object _gate = new object(); private IDisposable _current; private bool _disposed; public bool IsDisposed { get { lock (_gate) { return _disposed; } } } public IDisposable Disposable { get { return _current; } set { bool flag = false; IDisposable disposable = null; lock (_gate) { flag = _disposed; if (!flag) { disposable = _current; _current = value; } } disposable?.Dispose(); if (flag) value?.Dispose(); } } public void Dispose() { IDisposable disposable = null; lock (_gate) { if (!_disposed) { _disposed = true; disposable = _current; _current = null; } } disposable?.Dispose(); } } }