Как убедиться, что OnAfterRender () выполняется после OnInitializedAsync () в Blazor? - PullRequest
0 голосов
/ 30 октября 2019

Снова возникла проблема, с которой я столкнулся.

У меня есть два метода в моем файле Razor @code block.

    protected override async Task OnInitializedAsync()

и

    protected override async Task OnAfterRender()

Я хочу, чтобы OnAfterRender () выполнялся только после завершения OnInitializedAsync (). Я везде искал, как это сделать, но, похоже, это нигде не обсуждается. Есть идеи, как мне этого добиться?

Заранее спасибо.

1 Ответ

0 голосов
/ 30 октября 2019

Я действительно удивлен, что еще не обработан фреймворком. Разве вы не забыли подождать чего-нибудь с ключевым словом 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.

...