Blazor (сервер) и шаблон async / await

Введение в ASP.NET Core Blazor в статье Microsoft (Дэниел Рот и Люк Лэтэм) показаны примеры ожидаемых вызовов в коде Razor, например

@code {
    private WeatherForecast[] forecasts;

    protected override async Task OnInitializedAsync()
    {
        forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
    }
}

Однако ни в одном из примеров не указано, должны ли страницы Razor продолжаться в захваченном контексте или нет, например

.ConfigureAwait(false);
or 
.ConfigureAwait(true); 

Есть ли у Blazor концепция потока пользовательского интерфейса как единственного потока, способного обновлять компоненты? Что считается «наилучшей практикой» при вызове ожидаемых вызовов в компонентах страницы и / или в компонентах страницы.


person DrGriff    schedule 14.10.2019    source источник


Ответы (1)


Есть ли у Blazor концепция, что поток пользовательского интерфейса является единственным потоком, способным обновлять компоненты?

С серверным Blazor: да.
На стороне клиента есть только один поток (JavaScript), так что да, вроде.

Что считается «наилучшей практикой» при вызове ожидаемых вызовов в компонентах страницы и / или в компонентах страницы.

Чтобы не использовать какой-либо ConfigureAwait ().

Вы находитесь в контексте синхронизации с неявным поведением по умолчанию ConfigureAwait(true).

ConfigureAwait () будет полезен только тогда, когда вы создаете дополнительные потоки (с помощью Task.Run ()), но в целом вам этого не следует.

person Henk Holterman    schedule 14.10.2019