如何确保在Blazor中的OnInitializedAsync()之后执行OnAfterRender()?

时间:2019-10-30 01:09:27

标签: c# blazor blazor-server-side

我又遇到了一些问题。

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

    protected override async Task OnInitializedAsync()

    protected override async Task OnAfterRender()

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

谢谢。

1 个答案:

答案 0 :(得分: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