.NET 9.0 的 Blazor Web App 项目,进度条 <progress> 组件使用注意事项

一、执行过程中,要刷新 进度条 的显示,需要 延时、释放,否则进度条不 实时 更新,最后一下到 100%

 // 延时,释放给前端:【必须】,否则进度条不 实时 更新,最后一下到 100
 await Task.Delay(1);

二、执行过程中,需要 通知 Blazor 更新 UI,否则不 实时 更新

// 通知 Blazor 更新 UI:【必须】,否则不 实时 更新
StateHasChanged();

三、如果是单击执行,执行过程中,应该禁用 按钮,防止没有执行完毕就再次进入

// 禁用按钮
IsButtonDisabled = true;

四、示例程序

@page "/progress-demo"

进度条示例




进度: @progressValue%

@code { private bool IsButtonDisabled { get; set; } = false; // 模拟 费时 计算 void Calculation() { double d = 1.1; for (int i = 0; i < 1000000; i++) { d *= 9.9; } } // 进度条数值变量 private int progressValue = 0; private async Task StartCalculation() { // 禁用按钮 IsButtonDisabled = true; // 重置进度条 progressValue = 0; // 开始 多次 费时 操作 for (int i = 1; i <= 1000; i++) { // 这儿时 具体 费时 操作代码 Calculation(); // 更新一次进度条 if (i % 10 == 0) { // 更改进度条数值 progressValue++; // 输出到 Console 观察实际进度 System.Console.WriteLine($"progressValue = {progressValue}, i = {i}"); // 延时,释放给前端:【必须】,否则进度条不 实时 更新,最后一下到 100 await Task.Delay(1); // 通知 Blazor 更新 UI:【必须】,否则不 实时 更新 StateHasChanged(); } } // 计算完成,确保 进度条 设置为 100% progressValue = 100; // 重新启用按钮 IsButtonDisabled = false; await Task.FromResult(true); } }

你可能感兴趣的:(Blazor,Web,App,Blazor,web,app,.net,c#,前端)