服务器端blazor应用程序中的延迟问题
我在blazor服务器端应用程序中遇到了跨环境的不一致行为。以下是我的问题: 用户单击执行异步处理的按钮。在开始处理之前,我打开“showWaitDialog”变量,以便用户可以在处理完成时看到模式对话框。显示模式对话框至少需要两秒钟。这在服务器上比我的本地主机更突出。用户可以多次单击该按钮,我希望避免这种情况 下面是简化的代码,为了便于说明,我用thread.sleep替换了长时间运行的任务。我的长时间运行的任务调用数据库服务器端blazor应用程序中的延迟问题,blazor,blazor-server-side,Blazor,Blazor Server Side,我在blazor服务器端应用程序中遇到了跨环境的不一致行为。以下是我的问题: 用户单击执行异步处理的按钮。在开始处理之前,我打开“showWaitDialog”变量,以便用户可以在处理完成时看到模式对话框。显示模式对话框至少需要两秒钟。这在服务器上比我的本地主机更突出。用户可以多次单击该按钮,我希望避免这种情况 下面是简化的代码,为了便于说明,我用thread.sleep替换了长时间运行的任务。我的长时间运行的任务调用数据库 public async Task JoinRoom() { _i
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>
}
公共异步任务JoinRoom()
{
_isShowWaitDialog=true;
等待任务。延迟(1);//让GUI赶上
等待多龙工作();
_isShowWaitDialog=false;
等待任务。延迟(1);//让GUI赶上
}
任务DoLongWork()
{
系统。线程。线程。睡眠(6000);
返回Task.CompletedTask;
}
剃刀:
.
.
.
.
@如果(SelectedRoom!=null)
{
参加
}
“进度模式”对话框在单击“联接”按钮两秒钟后才会显示
在我的本地主机上,进度模式需要1秒才能显示,而在服务器上,我需要2秒才能看到进度模式对话框
我在服务器和Web套接字协议上的IIS管理器中进行了验证
有什么建议吗?我错过了什么 等待任务。延迟(1);//让GUI赶上吗???你已经计划好比赛条件了吗?至少你不需要让gui跟上进度。你确定DoLongWork真的是异步运行的吗?据我所知,当你的应用程序部署到服务器上时,平均延迟应该在150毫秒到200毫秒之间。。。尝试使用JSInterop显示对话框窗口并禁用按钮。什么是等待任务。延迟(1);用于?这看起来像是ProgressMessageModal的问题,您能包括它来自哪个库吗?谢谢大家的指点@HenkHolterman我在razor页面中有一个房间选择器控件,它执行数据库查询,处理约250条记录并返回结果。此数据库查询总共执行(5)次,在初始加载期间执行两次,在选择房间后执行一次,然后在单击“join room”按钮后执行两次。在初始加载期间执行两次,在单击按钮后执行两次,这是什么?是因为服务器渲染吗?!