【发布时间】:2017-12-24 08:41:24
【问题描述】:
上下文
我正在制作一个监控服务的 Web 应用程序。我为每项服务都有一个UpdatePanel,其中包含用于启动、停止和重新启动服务的状态和按钮。这都是由中继器创建的,并且工作正常。
现在我添加了一个asp:Timer 作为所有UpdatePanels 的触发器,因为我希望状态能够响应更新,所以我需要相当小的间隔。
问题
我目前有两个问题。主要问题(在标题中)是当单击按钮时,我有使用 SweetAlert2 的 javascript 来显示警告并等待用户输入。如果计时器在此脚本期间滴答作响,则会被中断。警告提示一直存在,但单击“确认”没有任何作用,因为后台脚本已被中断。
第二个也是更小的问题是,在滴答声中,当UpdatePanels 更新时,按钮瞬间无响应。这不是一个非常大的问题,但是如果您设法在滴答声中单击,则必须单击两次按钮很烦人。由于我想保持计时器间隔相当小,这实际上经常发生。
我想做什么
对于第一个问题,我真的不知道该怎么办。我可以在另一个线程上运行计时器吗?这甚至会像我想要的那样工作吗?我应该在 javascript 运行时暂停计时器吗?
对于第二个问题,我可能会做一个解决方法,将按钮放在他们自己的 UpdatePanel 或其他东西中。我想要UpdatePanel 中的按钮的主要原因是根据服务的状态更改显示哪些按钮:
// Set button visability and status color
if (service.Status.Equals(ServiceControllerStatus.Running))
{
statusSpan.Attributes.Add("class", "status-run");
btnStart.Visible = false;
}
else
{
statusSpan.Attributes.Add("class", "status-stop");
btnStop.Visible = false;
btnRestart.Visible = false;
}
我想我主要是在寻找解决 Web 窗体应用程序中这个“刷新问题”的最“正确”方法。但我会采用任何“hacky”解决方案,只要它能完成工作。
【问题讨论】:
标签: javascript c# asp.net timer webforms