Blazor(服务器)和 async/await 模式
Blazor (Server) and the async/await pattern
Microsoft(Daniel Roth 和 Luke Latham)的 Introduction to ASP.NET Core Blazor 文章显示了 Razor 代码中等待调用的示例,例如
@code {
private WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}
}
但是,none 个示例建议 razor 页面是否应该在捕获的上下文中继续,例如
.ConfigureAwait(false);
or
.ConfigureAwait(true);
Blazor 是否有 UI 线程是唯一能够更新组件的线程的概念?在页面组件中调用页面 and/or 中的等待调用时被认为是什么 "best practice"。
Does Blazor have the concept of the UI Thread being the only thread able to update components?
使用服务器端 Blazor:是。
对于客户端,只有一个线程 (JavaScript),所以,是的,有点。
What is considered "best practice" when calling awaited calls in the Page and/or in page components.
为了不使用任何ConfigureAwait()。
您所处的同步上下文具有隐式默认行为 ConfigureAwait(true)
。
ConfigureAwait() 仅在您创建额外线程(使用 Task.Run())时有用,但通常您不希望这样。
Microsoft(Daniel Roth 和 Luke Latham)的 Introduction to ASP.NET Core Blazor 文章显示了 Razor 代码中等待调用的示例,例如
@code {
private WeatherForecast[] forecasts;
protected override async Task OnInitializedAsync()
{
forecasts = await ForecastService.GetForecastAsync(DateTime.Now);
}
}
但是,none 个示例建议 razor 页面是否应该在捕获的上下文中继续,例如
.ConfigureAwait(false);
or
.ConfigureAwait(true);
Blazor 是否有 UI 线程是唯一能够更新组件的线程的概念?在页面组件中调用页面 and/or 中的等待调用时被认为是什么 "best practice"。
Does Blazor have the concept of the UI Thread being the only thread able to update components?
使用服务器端 Blazor:是。
对于客户端,只有一个线程 (JavaScript),所以,是的,有点。
What is considered "best practice" when calling awaited calls in the Page and/or in page components.
为了不使用任何ConfigureAwait()。
您所处的同步上下文具有隐式默认行为 ConfigureAwait(true)
。
ConfigureAwait() 仅在您创建额外线程(使用 Task.Run())时有用,但通常您不希望这样。