服务器端blazor应用程序中的延迟问题

服务器端blazor应用程序中的延迟问题,blazor,blazor-server-side,Blazor,Blazor Server Side,我在blazor服务器端应用程序中遇到了跨环境的不一致行为。以下是我的问题: 用户单击执行异步处理的按钮。在开始处理之前,我打开“showWaitDialog”变量,以便用户可以在处理完成时看到模式对话框。显示模式对话框至少需要两秒钟。这在服务器上比我的本地主机更突出。用户可以多次单击该按钮,我希望避免这种情况 下面是简化的代码,为了便于说明,我用thread.sleep替换了长时间运行的任务。我的长时间运行的任务调用数据库 public async Task JoinRoom() { _i

我在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">&nbsp;Join&nbsp;</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”按钮后执行两次。在初始加载期间执行两次,在单击按钮后执行两次,这是什么?是因为服务器渲染吗?!