<PackageReference Include="System.Reactive" Version="4.2.2" />

AnonymousDisposable

Represents an Action-based disposable.
using System.Threading; namespace System.Reactive.Disposables { internal sealed class AnonymousDisposable : ICancelable, IDisposable { private volatile Action _dispose; public bool IsDisposed => _dispose == null; public AnonymousDisposable(Action dispose) { _dispose = dispose; } public void Dispose() { Interlocked.Exchange(ref _dispose, null)?.Invoke(); } } }