·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> ASP.Net定时任务执行

ASP.Net定时任务执行

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

asp.net定时任务执行

原料:

System.Timers.Timer():通过.NET Thread Pool实现的,轻量,计时精确,对应用程序、消息没有特别的要求;缺点是不支持直接的拖放,需要手工编码。

Timer的主要属性:

1、Interval:引发Elapsed事件的间隔;

2、Elapsed:达到间隔发生的事件;

3、Enabled:指示Timer是否应引发Elapsed事件;

设计:

一、TaskBase,任务基类

1、字段:

a、TimeMode,任务类型分为周期型和时刻型;

b、LastStartTime

2、属性:

a、NextStartTime,只读属性

if (this.TimeMode == 0) {   if (this.LastStartTime == DateTime.MinValue)   {     return DateTime.MinValue;   }   return this.LastStartTime.AddSeconds((double)this.MinPeriod); } if (this.LastStartTime == DateTime.MinValue) {   return this.TheFixedNextStartTime; } return this.LastStartTime.AddDays(1.0).Date.AddHours((double)this.Hour).AddMinutes((double)this.Minute);

b、TheFixedNextStartTime,只读属性

if (this._theFixedNextStartTime == DateTime.MinValue) {   this._theFixedNextStartTime = DateTime.Today.AddHours((double)this.Hour).AddMinutes((double)this.Minute);   if (((SystemStartTime.Hour * 100) + SystemStartTime.Minute) > ((this.Hour * 100) + this.Minute))   {     this._theFixedNextStartTime = this._theFixedNextStartTime.AddDays(1.0);   } } return this._theFixedNextStartTime;

3、方法:

1、Execute:任务的具体执行

2、Run:任务运行

this.LastStartTime = DateTime.Now;

this.Execute();

二、TaskMonitor:任务监控

1、方法

a、Execute:Timer.Elapsed事件  

if (TimeMode == 1) {   flag = DateTime.Now >= base2.NextStartTime; } else {   flag = ((base2.TickCount == 0) && (base2.LastStartTime == DateTime.MinValue));   if (!flag)   {//定时器的运行间隔和任务运行间隔的比较     base2.TickCount += CheckPeriod;     flag = base2.TickCount >= base2.MinPeriod;   }   if (flag)   {     base2.TickCount = 0;   } } if (flag)  Thread.RunMethod(new ThreadStart(base2.Run));