Blazor(服务器端)和异步/等待模式

3

微软的 ASP.NET Core Blazor简介 (由Daniel Roth和Luke Latham编写)展示了在Razor代码中使用await标记的示例,例如:

@code {
    private WeatherForecast[] forecasts;

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

然而,这些示例都没有说明razor页面是否应该在捕获的上下文中继续执行,例如:

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

Blazor是否存在UI线程是唯一能够更新组件的概念?在页面或页面组件中调用awaited calls时,被视为“最佳实践”的做法是什么?
1个回答

4

Blazor是否有UI线程的概念,只有该线程才能更新组件?

对于服务器端的Blazor:是的。
对于客户端的Blazor:只有一个线程(JavaScript),所以也算是。

在页面和/或页面组件中调用等待异步调用时,什么被认为是最佳实践?

不要使用任何ConfigureAwait()。

你使用一个隐式的默认行为为ConfigureAwait(true)的同步上下文。

ConfigureAwait()仅在创建额外线程(使用Task.Run())时有用,但通常情况下你不应该这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接