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

AnonymousDisposable

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