【发布时间】:2020-08-10 06:17:58
【问题描述】:
我正在编写一个带有 bazor 页面的 ASP.Net Core 3.1 应用程序。
我想在用户点击按钮时触发(慢速)服务器端计算。
我想要的是在计算过程中输入“正在加载...”消息,然后显示该消息。
这是我在 C# 服务类中所做的:
public async Task<String> traitement1(String argument)
{
Thread.Sleep(5); // I want to simulate a very slow calculation
return await Task.FromResult("Finished ! Here is your result...");
}
这是我在我的 bazor 页面中所做的:
<p>@my_result</p>
<button @onclick="@on_btn_click">Click me</button>
@code
{
private String my_result = "";
private async void on_btn_click()
{
my_result = "Loading...";
my_result = await mon_service.traitement1("aaa");
}
}
它不起作用...有什么想法吗?
谢谢
【问题讨论】:
-
这能回答你的问题吗? Blazor - Display wait or spinner on API call
-
我希望你意识到
Thread.Sleep(5)会将代码延迟 5 毫秒?浏览器没有足够的时间注册状态更改并重新渲染。此外,您几乎应该从不使用async void。不要使用Thread.Sleep- 对于基于任务的异步方法,请使用Task.Delay(5000)延迟 5 秒