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();
}
}
}