mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-25 13:33:28 +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();
|
protected abstract void Init();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 销毁架构,同时销毁所有已注册的系统
|
/// 销毁架构并清理所有系统资源
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 此函数负责有序地销毁架构中的所有系统组件,并发送相应的生命周期事件。
|
||||||
|
/// 函数会确保只执行一次销毁操作,避免重复销毁。
|
||||||
|
/// </remarks>
|
||||||
public void Destroy()
|
public void Destroy()
|
||||||
{
|
{
|
||||||
|
// 检查当前阶段,如果已经处于销毁或已销毁状态则直接返回
|
||||||
if (CurrentPhase >= ArchitecturePhase.Destroying)
|
if (CurrentPhase >= ArchitecturePhase.Destroying)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// 进入销毁阶段并发送销毁开始事件
|
||||||
EnterPhase(ArchitecturePhase.Destroying);
|
EnterPhase(ArchitecturePhase.Destroying);
|
||||||
|
SendEvent(new ArchitectureEvents.ArchitectureDestroyingEvent());
|
||||||
|
|
||||||
|
// 销毁所有系统组件并清空系统列表
|
||||||
foreach (var system in _allSystems)
|
foreach (var system in _allSystems)
|
||||||
system.Destroy();
|
system.Destroy();
|
||||||
|
|
||||||
_allSystems.Clear();
|
_allSystems.Clear();
|
||||||
|
|
||||||
|
// 进入已销毁阶段并发送销毁完成事件
|
||||||
EnterPhase(ArchitecturePhase.Destroyed);
|
EnterPhase(ArchitecturePhase.Destroyed);
|
||||||
|
SendEvent(new ArchitectureEvents.ArchitectureDestroyedEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -1,11 +1,25 @@
|
|||||||
|
namespace GFramework.Core.events;
|
||||||
namespace GFramework.Core.events;
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 架构事件定义类,包含应用程序架构生命周期相关的事件结构体
|
||||||
|
/// </summary>
|
||||||
public static class ArchitectureEvents
|
public static class ArchitectureEvents
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 架构初始化完成事件
|
/// 架构生命周期准备就绪事件
|
||||||
/// 在所有 Model / System Init 执行完毕后派发
|
/// 当架构完成初始化并准备就绪时触发此事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly struct ArchitectureLifecycleReadyEvent;
|
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