blazor - 服务器端 Blazor 应用程序中的延迟问题
问题描述
我在跨环境的 blazor 服务器端应用程序中遇到不一致的行为。以下是我的问题:
用户单击执行一些异步处理的按钮。在开始处理之前,我打开“showWaitDialog”变量,以便用户可以在处理完成时看到模式对话框。模态对话框出现之前至少需要两秒钟。这在服务器上比我的本地主机更突出。用户可以多次单击该按钮,我想避免这种情况。
下面是简化的代码,出于说明目的,我用 thread.sleep 替换了我长时间运行的任务。我长期运行的任务调用数据库。
public async Task JoinRoom()
{
_isShowWaitDialog = true;
await Task.Delay(1); // allow the GUI to catch up
await DoLongWork();
_isShowWaitDialog = false;
await Task.Delay(1); // allow the GUI to catch up
}
Task DoLongWork()
{
System.Threading.Thread.Sleep(6000);
return Task.CompletedTask;
}
razor:
.
.
<ProgressMessageModal WaitDialogParameter="@_isShowWaitDialog" />
.
.
@if (SelectedRoom != null)
{
<div class="col-sm-1">
<div class="form-group">
<button type="button" class="btn btn-info" @onclick="JoinRoom"> Join </button>
</div>
</div>
}
进度模式对话框在他们单击加入按钮后两秒钟后才会显示。
在我的本地主机上,显示进度模式需要 1 秒,而在服务器上,我需要 2 秒才能看到进度模式对话框。
我在服务器上的 IIS 管理器中验证并启用了 Web Sockets 协议。
任何指针?我错过了什么?
解决方案
推荐阅读
- prolog - 二叉树中所有节点的乘法
- firebase - 如何在 Firebase 中创建具有自定义 ID 的文档?扑
- java - 组合 findAll、flatMap 和 Schedulers.boundedElastic() 时缺少事件/项目
- node.js - 是否有使用适用于 JavaScript 的 AWS 加密 SDK 进行客户端加密的工作示例?
- curl - 尝试使用 GitLab API 下载原始文件时如何解决 404 错误?
- python - 将 JSON 中的特定字符串返回到单独的变量中 | 使用 Python
- android - 如何在不活动时使应用程序变暗但通过服务回到前台
- asp.net - 解析器错误消息:文件 'XXX.aspx.vb' 不存在。IIS 服务器
- javascript - 过滤具有多个过滤条件的对象数组
- c# - 带有按钮绑定的 Ractive UI 命令