首页 > 解决方案 > 服务器端 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">&nbsp;Join&nbsp;</button>
     </div>
   </div>
}


进度模式对话框在他们单击加入按钮后两秒钟后才会显示。

在我的本地主机上,显示进度模式需要 1 秒,而在服务器上,我需要 2 秒才能看到进度模式对话框。

我在服务器上的 IIS 管理器中验证并启用了 Web Sockets 协议。

任何指针?我错过了什么?

标签: blazorblazor-server-side

解决方案


推荐阅读