我在不同环境中的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套接字协议。
有指针吗?我想念什么?