如何创建一个runat服务器asp的对象

时间:2015-10-12 01:39:47

标签: c# asp.net

我希望定义一个计时器,但是,在我的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;
    }

此代码不起作用,事件无法执行

2 个答案:

答案 0 :(得分:0)

您从未将Timer添加到页面。

它是在类级别创建的,但是在处理HTTP请求时会立即处理该类,并且不会为其维护服务器端状态。因此,每个请求实际上都是创建Timer然后处理它。

如果Timer确实是页面控件,则需要将其添加到页面中。我并不完全熟悉这个控件,但如果它需要向客户端发出JavaScript以便以给定的时间间隔调用事物,那么控件将需要在页面上才能实现。

这样的事情,也许是:

this.Controls.Add(loopMessage);

答案 1 :(得分:0)

就像David说的那样,这段代码实际上会在每次回发时创建一个新的计时器。如果您的计时器不在更新面板中,则每个刻度都会触发另一个回发。因此,如果我正确理解您的问题,首先您必须在页面上添加更新面板,然后您可以将更新面板的控件添加到此计时器。

或者您可以将所有ASP.NET问题留在这里并转向javascript计时器并使用jquery ajax方法来解决您的问题。请确保这对于此问题和您未来的项目更有效。