Dotnet 8 Blazor Web 应用程序流渲染混乱

问题描述 投票:0回答:1

据我从 Microsoft 了解到,流式渲染允许需要执行长时间运行请求的页面通过 HTML 的初始有效负载快速加载,一旦长时间运行的调用完成,剩余的 HTML 就会流式传输到浏览器并无缝修补到客户端上现有的 DOM。

我正在使用 dotnet 8 的默认模板

Blazor Web App
,正如微软所做的那样,他们为
OnInitializedAsync
组件的
Weather
方法添加了延迟。

await Task.Delay(10000);

当我将延迟增加到 10000 毫秒时..页面仍会显示

Loading...
并且仍然处于活动状态而不冻结。

问题

我们到了让我困惑的地步,我没有增加任务延迟,而是尝试通过增加天气记录的数量来获取 30000 条天气记录:

Enumerable.Range(1, 30000)

在这种情况下,页面在获取记录时冻结。即使在

Weather
组件顶部具有流式渲染属性

@attribute [StreamRendering]

请问我遇到了什么问题或误解?

提前致谢

.net blazor server-side-rendering webassembly blazor-rendermode
1个回答
0
投票

在这种情况下,页面在获取记录时冻结。即使具有流式渲染属性

是的,因为增加记录数会增加 CPU 负载,而且这不是异步的。

您将必须使用额外的线程(使用 Task.Run() )。

forecasts = await Task.Run( () => { Enumerable.Range(1, 30000). ... });
© www.soinside.com 2019 - 2024. All rights reserved.