简体   繁体   中英

How can I run my Timer forever in asp.net?

In ASP.NET I want to run my timer forever (as long as my host server is running). How can I achieve this?

public int ClickCount
{
        get
        {
            object o = ViewState["ClickCount"];
            return (o == null) ? 0 : (int)o;
        }
        set
        {
            ViewState["ClickCount"] = value;
        }
    }

    public int minute
    {
        get
        {
            object o = ViewState["minute"];
            return (o == null) ? 0 : (int)o;
        }
        set
        {
            ViewState["minute"] = value;
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (minute < 5)
        {
            if (ClickCount < 5)
            {
                ClickCount++;
                MsgBox("node inserted", this.Page, this);
            }
            else
            {
                MsgBox("not more than 5 nodes in 5 minutes", this.Page, 
this);
            }
        }
        else
        {
            minute = 0;
            ClickCount = 0;
        }
    }

    protected void Timer1_Tick(object sender, EventArgs e)
    {
        minute = minute + 1;
    }

<asp:Timer ID="Timer1" runat="server" Interval="60000" 
           ontick="Timer1_Tick">
</asp:Timer>

According to me my variable "minute" well be incremented by 1 after every timer_tick event. But problem is that my timer will be close when i stop my application. And as you says that I can use host server system clock, then how can I use it. I mean to say that how I can code my application so that at every host server system clock pulse my variable "minute" will be incremented by 1. Thanks.

To start your "timer," store the current time.

void StartTimer()
{
    ViewState["StartTime"] = DateTime.Now;
}

When you wish to obtain a value for minutes , calculate it:

int Minutes 
{
    get
    {
        DateTime startTime = (DateTime)ViewState["StartTime"];
        TimeSpan elapsed = DateTime.Now - startTime;
        return elapsed.TotallMinutes;
    }
}        

There is no need to actually increment anything, or keep a timer of your own.

You could also render the startTime value into a hidden HTML field, which would allow Javascript to display the timer by performing a similar calculation. The advantage of JS would be continuous updating.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM