using GFramework.Core.Abstractions.Pause; namespace GFramework.Core.Pause; /// /// 暂停作用域,支持 using 语法自动管理暂停生命周期 /// public class PauseScope : IDisposable { private readonly IPauseStackManager _manager; private readonly PauseToken _token; private bool _disposed; /// /// 创建暂停作用域 /// /// 暂停栈管理器 /// 暂停原因 /// 暂停组 public PauseScope(IPauseStackManager manager, string reason, PauseGroup group = PauseGroup.Global) { _manager = manager ?? throw new ArgumentNullException(nameof(manager)); _token = _manager.Push(reason, group); } /// /// 释放作用域,自动恢复暂停 /// public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// /// 释放资源 /// /// 是否正在显式释放 protected virtual void Dispose(bool disposing) { if (_disposed) return; if (disposing) { _manager.Pop(_token); } _disposed = true; } }