我希望定义一个计时器,但是,在我的asp.net后面定义的计时器不起作用。
当我在html中创建计时器时,它使runat服务器运行正常。
如何使用runat =“server”属性在后台代码上定义计时器?
private Timer loopMessage = new Timer();
protected void Page_Load(object sender, EventArgs e)
{
loopMessage.Tick += new EventHandler<EventArgs>(loopMessage_Tick);
loopMessage.Interval = 3000;
loopMessage.Enabled = true;
}
此代码不起作用,事件无法执行
答案 0 :(得分:0)
您从未将Timer
添加到页面。
它是在类级别创建的,但是在处理HTTP请求时会立即处理该类,并且不会为其维护服务器端状态。因此,每个请求实际上都是创建Timer
然后处理它。
如果Timer
确实是页面控件,则需要将其添加到页面中。我并不完全熟悉这个控件,但如果它需要向客户端发出JavaScript以便以给定的时间间隔调用事物,那么控件将需要在页面上才能实现。
这样的事情,也许是:
this.Controls.Add(loopMessage);
答案 1 :(得分:0)
就像David说的那样,这段代码实际上会在每次回发时创建一个新的计时器。如果您的计时器不在更新面板中,则每个刻度都会触发另一个回发。因此,如果我正确理解您的问题,首先您必须在页面上添加更新面板,然后您可以将更新面板的控件添加到此计时器。
或者您可以将所有ASP.NET问题留在这里并转向javascript计时器并使用jquery ajax方法来解决您的问题。请确保这对于此问题和您未来的项目更有效。