博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.Net定时任务执行
阅读量:6968 次
发布时间:2019-06-27

本文共 1643 字,大约阅读时间需要 5 分钟。

原料:

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));

      

转载于:https://www.cnblogs.com/wrjhome/p/4517388.html

你可能感兴趣的文章
c/c++ helloworld
查看>>
xopy写批处理的忌讳..
查看>>
为程序添加系统上下文菜单
查看>>
css色彩对应值
查看>>
XWiki 4.3 正式版发布
查看>>
java中finally和return的执行顺序
查看>>
.net微信公众号开发——群发消息
查看>>
纪念逝去的岁月——C++实现一个队列(使用类模板)
查看>>
GO语言练习:多返回值函数
查看>>
让x86的android模拟器能模拟arm架构系统
查看>>
初学Struts2-自定义拦截器及其配置
查看>>
关于js中的几个小问题。
查看>>
hdoj-2058-the sum problem
查看>>
MySql基础整理
查看>>
Spring Bean Scope 有状态的Bean 无状态的Bean
查看>>
php 批量修改文件格式或重命名
查看>>
Android数据加密之Aes加密
查看>>
InputStream,String相互转化
查看>>
Atitit.gui api自动化调用技术原理与实践
查看>>
详解zabbix安装部署(Server端篇)
查看>>