ASP.NET中实现程序自动运行
ASP.NET中我在Application_Start中使用Timer计算器实现程序定时运行,详细代码如下:
Global.asax:
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
//创建一个计时器,单位:毫秒
System.Timers.Timer aTimer = new System.Timers.Timer();
//将 Fresher 指定为计时器的 Elapsed 事件处理程序
aTimer.Elapsed += new System.Timers.ElapsedEventHandler(Fresher);
// AutoReset 属性为 true 时,每隔指定时间循环一次;
// 如果为 false,则只执行一次。
aTimer.Interval = 300000;
aTimer.AutoReset = true;
aTimer.Enabled = true;
}
void Fresher(object sender, ElapsedEventArgs e)
{
//先给 Application["TimeStamp"] 指定一个初值
this.Application.Lock();
this.Application["TimeStart"] = DateTime.Now.ToString();
this.Application.UnLock();
CollectData cd = new CollectData();
cd.ExceCD();
this.Application.Lock();
this.Application["TimeEnd"] = DateTime.Now.ToString();
this.Application.UnLock();
}
view.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("开始更新数据时间:" + this.Application["TimeStart"].ToString());
Response.Write("<br>结束更新数据时间:" + this.Application["TimeEnd"].ToString());
Response.Write("<br>--------------------------");
Response.Write("<br>" + (new CollectData()).PageStr);
}
view.aspx运行显示结果如下:
开始更新数据时间:2008-7-28 14:41:48
结束更新数据时间:2008-7-28 14:40:46
--------------------------
觉得很奇怪的是其结束时间竟早于开始时间,不知道什么原因!
小弟初学ASP.NET,请各位前辈指点一二!
------解决方案--------------------
楼主的有没有这种可能
你执行view.aspx的时候,Fresher()刚好执行在 cd.ExceCD(); 这句
Fresher()还没来得及给["TimeEnd"]赋新值,还是上一次的执行的Fresher()所赋的值
如果你这个cd.ExceCD(); 需要相当长的时间才能执行完,那就极有可能