mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-23 11:14:30 +08:00
feat(core): 完善架构销毁逻辑并新增生命周期事件
- 优化 `Architecture.Destroy()` 方法,确保系统资源被正确清理 - 添加销毁阶段的状态检查,防止重复销毁 - 引入 `ArchitectureDestroyingEvent` 和 `ArchitectureDestroyedEvent` 事件 - 补充架构事件类的注释说明,提升代码可读性
This commit is contained in:
parent
8df2b071cf
commit
383d934e02
@ -171,21 +171,31 @@ public abstract class Architecture<T> : IArchitecture where T : Architecture<T>,
|
||||
protected abstract void Init();
|
||||
|
||||
/// <summary>
|
||||
/// 销毁架构,同时销毁所有已注册的系统
|
||||
/// 销毁架构并清理所有系统资源
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// 此函数负责有序地销毁架构中的所有系统组件,并发送相应的生命周期事件。
|
||||
/// 函数会确保只执行一次销毁操作,避免重复销毁。
|
||||
/// </remarks>
|
||||
public void Destroy()
|
||||
{
|
||||
// 检查当前阶段,如果已经处于销毁或已销毁状态则直接返回
|
||||
if (CurrentPhase >= ArchitecturePhase.Destroying)
|
||||
return;
|
||||
|
||||
// 进入销毁阶段并发送销毁开始事件
|
||||
EnterPhase(ArchitecturePhase.Destroying);
|
||||
|
||||
SendEvent(new ArchitectureEvents.ArchitectureDestroyingEvent());
|
||||
|
||||
// 销毁所有系统组件并清空系统列表
|
||||
foreach (var system in _allSystems)
|
||||
system.Destroy();
|
||||
|
||||
_allSystems.Clear();
|
||||
|
||||
// 进入已销毁阶段并发送销毁完成事件
|
||||
EnterPhase(ArchitecturePhase.Destroyed);
|
||||
SendEvent(new ArchitectureEvents.ArchitectureDestroyedEvent());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@ -1,11 +1,25 @@
|
||||
|
||||
namespace GFramework.Core.events;
|
||||
namespace GFramework.Core.events;
|
||||
|
||||
/// <summary>
|
||||
/// 架构事件定义类,包含应用程序架构生命周期相关的事件结构体
|
||||
/// </summary>
|
||||
public static class ArchitectureEvents
|
||||
{
|
||||
/// <summary>
|
||||
/// 架构初始化完成事件
|
||||
/// 在所有 Model / System Init 执行完毕后派发
|
||||
/// 架构生命周期准备就绪事件
|
||||
/// 当架构完成初始化并准备就绪时触发此事件
|
||||
/// </summary>
|
||||
public readonly struct ArchitectureLifecycleReadyEvent;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 架构销毁中事件
|
||||
/// 当架构开始销毁过程时触发此事件,表示系统正在关闭
|
||||
/// </summary>
|
||||
public readonly struct ArchitectureDestroyingEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 架构已销毁事件
|
||||
/// 当架构完全销毁完成后触发此事件,表示系统已关闭
|
||||
/// </summary>
|
||||
public readonly struct ArchitectureDestroyedEvent;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user