首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不触发timer.Elapsed动作

不触发timer.Elapsed动作
EN

Stack Overflow用户
提问于 2015-06-22 19:31:57
回答 2查看 348关注 0票数 0

我有一个按钮,我想要禁用后,4次失败提交尝试。我使用System.Timers计时器数到15秒,然后尝试在这15秒之后重新启用按钮。

这是我的密码:

代码语言:javascript
复制
 if (SessionManager.getRetries > 3)
    {
        Message.Text = "Too many failed attempts. Please retry in 15 seconds.";
        buttonOne.Enabled = false;
        HttpContext.Current.Session["RetryCount"] = 0;
        System.Timers.Timer myTimer = new System.Timers.Timer();
        myTimer.AutoReset = false;
        myTimer.Interval = 15000;
        myTimer.Enabled = true;
        myTimer.Start();
        myTimer.Elapsed += myTimer_Elapsed;
    }
}

void myTimer_Elapsed(object sender, ElapsedEventArgs e)
{
    buttonOne.Enabled = true;
}

到目前为止,我的程序将正确计算提交尝试的# (SessionManager.getRetries)。在4次尝试失败后,它将输入以下if语句。然后,它创建计时器,设置时间间隔,启动它,并知道经过的时间。它甚至会转到buttonOne.Enabled = true语句,但是它实际上没有启用我的按钮。(这是通过在visual studio中使用断点来观察的)。

这里有什么东西我遗漏了吗?也许经过的事件没有按我所希望的方式工作?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-23 14:17:05

如前所述,问题不在于事件没有触发,而是由于计时器只存在服务器端,所以无法通过我之前尝试的方法在客户端显示启用按钮。

但是我发现了一个比想出一些草率的Javascript更简单的方法:)

通过使用更新面板和asp计时器。通过在更新面板中放置一个asp计时器,并将计时器设置为默认禁用,然后我可以操作定时器。然后,当计时器滴答滴答时,通过更新面板自动更新:)

这里有很好的代码示例:ASP.NET Timer Event

票数 0
EN

Stack Overflow用户

发布于 2015-06-22 19:44:10

Timer事件应该是触发的,但是它无法启用HTML页面上的按钮,因为在此之前请求已经完成。

您应该将计时器移动到页面上的JavaScript。您仍然需要保持逻辑,以验证重试不会更频繁,因为绕过JavaScript或任何其他客户端验证非常容易。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30988290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档