Asp Timer tick事件中断客户端javascript

时间:2017-07-19 08:01:28

标签: javascript c# asp.net timer webforms

上下文

我正在制作一个监控服务的Web应用程序。每个服务都有一个UpdatePanel,其状态和按钮可以启动,停止和重启服务。这一切都是由Repeaters创建的,并且工作正常。

现在我添加了一个asp:Timer作为所有UpdatePanel的触发器,因为我希望状态能够相应地更新,我需要间隔相当小。

问题

我目前有两个问题。主要问题(在标题中)是,当单击按钮时,我有javascript使用SweetAlert2来显示警告并等待用户输入。如果计时器在此脚本中打勾,则会中断。警告提示保持不变,但点击"确认"因为后台脚本被中断所以什么都不做。

第二个也是一个小问题是,在勾选期间,UpdatePanel更新时,按钮在一瞬间没有响应。这不是一个超级大问题,但是如果您在勾选期间设法点击,则必须单击两次按钮才会很烦人。由于我想保持定时器间隔相当小,这实际上经常发生。

我一直在考虑做什么

对于第一期,我真的不知道该怎么做。我可以在另一个线程上运行计时器吗?这甚至会像我想要的那样工作吗?我应该在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"解决方案,只要它完成工作。

2 个答案:

答案 0 :(得分:0)

在另一页中使用您的计时器, 并将该页面iframe放在此页面上.... 它不会打扰你的Javascript电话......

答案 1 :(得分:0)

在为我的第二个问题制定解决方法时,我偶然也解决了我的第一个问题。

通过将按钮移动到他们自己的UpdatePanel,他们不再受计时器的影响,并且javascript不会中断。我想javascript的问题是按钮被重新加载到UpdatePanel并且中断了脚本。