mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-12 13:14:30 +08:00
fix(game): 清理 UiRouterBase 的低风险异步包装
- 调整 UiRouterBase 的异步过渡调用以显式保留同步上下文 - 清理 Push Pop Replace Clear 流程中的低风险 MA0004 - 保持 UI 生命周期顺序与过渡阶段语义不变
This commit is contained in:
parent
e8eda8170c
commit
3be299e6f1
@ -101,10 +101,10 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
await DoPushPageInternalAsync(uiKey, param, policy);
|
await DoPushPageInternalAsync(uiKey, param, policy).ConfigureAwait(true);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -129,10 +129,10 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
DoPushPageInternal(page, param, policy);
|
DoPushPageInternal(page, param, policy);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -149,7 +149,7 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
var leavingUiKey = Stack.Peek().Key;
|
var leavingUiKey = Stack.Peek().Key;
|
||||||
|
|
||||||
if (!await ExecuteLeaveGuardsAsync(leavingUiKey))
|
if (!await ExecuteLeaveGuardsAsync(leavingUiKey).ConfigureAwait(true))
|
||||||
{
|
{
|
||||||
Log.Warn("Pop blocked by guard: {0}", leavingUiKey);
|
Log.Warn("Pop blocked by guard: {0}", leavingUiKey);
|
||||||
return;
|
return;
|
||||||
@ -160,10 +160,10 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
DoPopInternal(policy);
|
DoPopInternal(policy);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -182,15 +182,15 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
DoClearInternal(popPolicy);
|
DoClearInternal(popPolicy);
|
||||||
|
|
||||||
var page = _factory.Create(uiKey);
|
var page = _factory.Create(uiKey);
|
||||||
Log.Debug("Get/Create UI Page instance for Replace: {0}", page.GetType().Name);
|
Log.Debug("Get/Create UI Page instance for Replace: {0}", page.GetType().Name);
|
||||||
|
|
||||||
DoPushPageInternal(page, param, pushPolicy);
|
DoPushPageInternal(page, param, pushPolicy);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -211,12 +211,12 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
DoClearInternal(popPolicy);
|
DoClearInternal(popPolicy);
|
||||||
Log.Debug("Use existing UI Page instance for Replace: {0}", page.GetType().Name);
|
Log.Debug("Use existing UI Page instance for Replace: {0}", page.GetType().Name);
|
||||||
DoPushPageInternal(page, param, pushPolicy);
|
DoPushPageInternal(page, param, pushPolicy);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -229,10 +229,10 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
|
|
||||||
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
await _pipeline.ExecuteAroundAsync(@event, async () =>
|
||||||
{
|
{
|
||||||
await BeforeChangeAsync(@event);
|
await BeforeChangeAsync(@event).ConfigureAwait(true);
|
||||||
DoClearInternal(UiPopPolicy.Destroy);
|
DoClearInternal(UiPopPolicy.Destroy);
|
||||||
await AfterChangeAsync(@event);
|
await AfterChangeAsync(@event).ConfigureAwait(true);
|
||||||
});
|
}).ConfigureAwait(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -650,7 +650,7 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
private async Task BeforeChangeAsync(UiTransitionEvent @event)
|
private async Task BeforeChangeAsync(UiTransitionEvent @event)
|
||||||
{
|
{
|
||||||
Log.Debug("BeforeChange phases started: {0}", @event.TransitionType);
|
Log.Debug("BeforeChange phases started: {0}", @event.TransitionType);
|
||||||
await _pipeline.ExecuteAsync(@event, UiTransitionPhases.BeforeChange);
|
await _pipeline.ExecuteAsync(@event, UiTransitionPhases.BeforeChange).ConfigureAwait(true);
|
||||||
Log.Debug("BeforeChange phases completed: {0}", @event.TransitionType);
|
Log.Debug("BeforeChange phases completed: {0}", @event.TransitionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -661,7 +661,7 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
private async Task AfterChangeAsync(UiTransitionEvent @event)
|
private async Task AfterChangeAsync(UiTransitionEvent @event)
|
||||||
{
|
{
|
||||||
Log.Debug("AfterChange phases started: {0}", @event.TransitionType);
|
Log.Debug("AfterChange phases started: {0}", @event.TransitionType);
|
||||||
await _pipeline.ExecuteAsync(@event, UiTransitionPhases.AfterChange);
|
await _pipeline.ExecuteAsync(@event, UiTransitionPhases.AfterChange).ConfigureAwait(true);
|
||||||
Log.Debug("AfterChange phases completed: {0}", @event.TransitionType);
|
Log.Debug("AfterChange phases completed: {0}", @event.TransitionType);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -673,7 +673,7 @@ public abstract class UiRouterBase : RouterBase<IUiPageBehavior, IUiPageEnterPar
|
|||||||
/// <param name="policy">过渡策略</param>
|
/// <param name="policy">过渡策略</param>
|
||||||
private async Task DoPushPageInternalAsync(string uiKey, IUiPageEnterParam? param, UiTransitionPolicy policy)
|
private async Task DoPushPageInternalAsync(string uiKey, IUiPageEnterParam? param, UiTransitionPolicy policy)
|
||||||
{
|
{
|
||||||
if (!await ExecuteEnterGuardsAsync(uiKey, param))
|
if (!await ExecuteEnterGuardsAsync(uiKey, param).ConfigureAwait(true))
|
||||||
{
|
{
|
||||||
Log.Warn("Push blocked by guard: {0}", uiKey);
|
Log.Warn("Push blocked by guard: {0}", uiKey);
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user