【问题标题】:How to make sure OnAfterRender() gets executed after OnInitializedAsync() in Blazor?如何确保 OnAfterRender() 在 Blazor 中的 OnInitializedAsync() 之后执行?
【发布时间】:2019-10-30 01:09:27
【问题描述】:

我又遇到了一些问题。

我的 Razor 文件 @code 块中有两种方法。

    protected override async Task OnInitializedAsync()

    protected override async Task OnAfterRender()

我希望 OnAfterRender() 仅在 OnInitializedAsync() 完成执行后执行。我到处寻找如何解决它,但这似乎没有在任何地方讨论过。关于如何实现这一目标的任何想法?

提前致谢。

【问题讨论】:

  • 也许只是使用几个布尔标志?
  • 也许你可以使用 OnInitialized() 而不是 OnInitializedAsync()?
  • @IMil 我有一些东西要返回,不能用 OnInitialized() 来完成。
  • 别忘了等待什么。框架应该处理它。

标签: c# blazor blazor-server-side


【解决方案1】:

我真的很惊讶框架尚未处理。你不会忘记用await 关键字等待一些东西吗?

无论如何,当我必须同步线程时,我会使用WaitHandle

您的代码可能是:

private ManuelResetEvent _syncEvent = new ManualResetEvent(false);
protected override async Task OnInitializedAsync()
{
    await awaitableStuff();
    _syncEvent.Set();
}

protected override async Task OnAfterRender()
{
    _syncEvent.WaitOne();
    await otherAwaitableStuff();
}

别忘了处置WaitHandle

【讨论】:

    猜你喜欢
    • 2023-01-03
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2021-10-27
    • 2021-11-14
    相关资源
    最近更新 更多