16 lines
413 B
C#
16 lines
413 B
C#
namespace Store.Management.Framework.Utilities;
|
|
|
|
/// <summary>在释放时执行一次清理操作,可安全地重复或并发释放。</summary>
|
|
public sealed class DisposeAction : IDisposable
|
|
{
|
|
private Action? _action;
|
|
|
|
public DisposeAction(Action action)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(action);
|
|
_action = action;
|
|
}
|
|
|
|
public void Dispose() => Interlocked.Exchange(ref _action, null)?.Invoke();
|
|
}
|