[英]How can I run my Timer forever in asp.net?
在 ASP.NET 中,我想永远运行我的计时器(只要我的主机服务器正在运行)。 我怎样才能做到这一点?
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>
根据我的说法,我的变量“分钟”在每个 timer_tick 事件之后都会增加 1。 但问题是当我停止我的应用程序时我的计时器将关闭。 正如您所说,我可以使用主机服务器系统时钟,那么我该如何使用它。 我的意思是说我如何编码我的应用程序,以便在每个主机服务器系统时钟脉冲我的变量“分钟”将增加 1。谢谢。
要启动您的“计时器”,请存储当前时间。
void StartTimer()
{
ViewState["StartTime"] = DateTime.Now;
}
当您希望获得minutes
的值时,请计算它:
int Minutes
{
get
{
DateTime startTime = (DateTime)ViewState["StartTime"];
TimeSpan elapsed = DateTime.Now - startTime;
return elapsed.TotallMinutes;
}
}
无需实际增加任何内容,或保留自己的计时器。
您还可以将startTime
值渲染到隐藏的 HTML 字段中,这将允许 Javascript 通过执行类似的计算来显示计时器。 JS 的优势在于不断更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.