using GFramework.Core.Abstractions.Utility; namespace GFramework.Core.Abstractions.Pause; /// /// 暂停栈管理器接口,管理嵌套暂停状态 /// public interface IPauseStackManager : IContextUtility { /// /// 推入暂停请求 /// /// 暂停原因(用于调试) /// 暂停组 /// 暂停令牌(用于后续恢复) PauseToken Push(string reason, PauseGroup group = PauseGroup.Global); /// /// 弹出暂停请求 /// /// 暂停令牌 /// 是否成功弹出 bool Pop(PauseToken token); /// /// 查询指定组是否暂停 /// /// 暂停组 /// 是否暂停 bool IsPaused(PauseGroup group = PauseGroup.Global); /// /// 获取指定组的暂停深度(栈中元素数量) /// /// 暂停组 /// 暂停深度 int GetPauseDepth(PauseGroup group = PauseGroup.Global); /// /// 获取指定组的所有暂停原因 /// /// 暂停组 /// 暂停原因列表 IReadOnlyList GetPauseReasons(PauseGroup group = PauseGroup.Global); /// /// 创建暂停作用域(支持 using 语法) /// /// 暂停原因 /// 暂停组 /// 可释放的作用域对象 IDisposable PauseScope(string reason, PauseGroup group = PauseGroup.Global); /// /// 清空指定组的所有暂停请求 /// /// 暂停组 void ClearGroup(PauseGroup group); /// /// 清空所有暂停请求 /// void ClearAll(); /// /// 注册暂停处理器 /// /// 处理器实例 void RegisterHandler(IPauseHandler handler); /// /// 注销暂停处理器 /// /// 处理器实例 void UnregisterHandler(IPauseHandler handler); /// /// 暂停状态变化事件。 /// 事件遵循标准 .NET 事件模式,事件源为触发通知的暂停管理器实例, /// 事件数据由 提供。 /// event EventHandler? OnPauseStateChanged; }