diff --git a/GFramework.Core/architecture/Architecture.cs b/GFramework.Core/architecture/Architecture.cs index 25ab46a..ba1f269 100644 --- a/GFramework.Core/architecture/Architecture.cs +++ b/GFramework.Core/architecture/Architecture.cs @@ -86,7 +86,9 @@ public abstract class Architecture( #endregion #region Fields + private readonly TaskCompletionSource _readyTcs = new(TaskCreationOptions.RunContinuationsAsynchronously); + public bool IsReady => CurrentPhase == ArchitecturePhase.Ready; /// /// 待初始化组件的去重集合 /// @@ -553,9 +555,18 @@ public abstract class Architecture( _mInitialized = true; EnterPhase(ArchitecturePhase.Ready); - + // 🔥 释放 Ready await + _readyTcs.TrySetResult(); + _logger.Info($"Architecture {GetType().Name} is ready - all components initialized"); } - + + /// + /// 等待架构初始化完成(Ready 阶段) + /// + public Task WaitUntilReadyAsync() + { + return IsReady ? Task.CompletedTask : _readyTcs.Task; + } #endregion } \ No newline at end of file