我浏览了一些我继承的代码。该页面有一个更新面板,其中有一个计时器控件。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<asp:Timer ID="process" runat="server" Interval="1500" OnTick="process_Tick">
</asp:Timer>
</asp:UpdatePanel>
在计时器的tick事件开始后面的代码中:
protected void process_Tick(object sender, EventArgs e)
{
process.Enabled = false;
计时器被禁用..很可能只是勾选了一次。在事件的后面,我们至少有两个地方让线程处于睡眠状态,以便在处理中引入一些等待:
Thread.Sleep(18000);
以及
Thread.Sleep(10 * 1000);
这两个线程停止处理一段时间,但会导致不同线程上的回发,并且每个线程都会触发tick事件....
如何阻止创建这些线程并一次又一次地触发tick事件。由于此代码,表单会多次提交。
非常感谢任何帮助。
答案 0 :(得分:2)
将AsyncPostBackTimeout属性添加到ScriptManager。默认情况下,它会在90秒后超时。因此,通过增加超时,不会一次又一次地触发计时器的Tick事件。
<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="400" >
</asp:ScriptManager>