【发布时间】:2021-08-08 23:01:54
【问题描述】:
我有一个 Blazor 服务器站点,其中包含一个应该执行以下操作的简单方法:
- 在按钮上启动微调器
- 执行
SaveChanges, - 停止微调器并显示一条消息,提醒用户注意结果,
- 5 秒后清除消息。
代码如下:
private async Task HandleValidSubmit() {
// Start spinner
Icon = "spinner-border spinner-border-sm";
try {
Context.Update(Case);
await Context.SaveChangesAsync();
message = "Key info successfully updated";
messageStatus = "success";
} catch (Exception ex) {
message = ex.Message;
messageStatus = "danger";
}
// Stop spinner
Icon = "k-icon k-i-save";
await Task.Delay(5000);
messageStatus = " d-none";
}
但是,当运行该方法时,微调器会显示五秒钟,并且不会出现任何消息。如果我注释掉 await Context.SaveChangesAsync(); 它会按预期运行。
为什么当第一个 await 完成时微调器没有停止,为什么消息没有显示 5 秒?是否与两次await 通话有关?
我做错了什么?任何帮助表示赞赏。
【问题讨论】:
标签: c# async-await blazor-server-side