原料:

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

ASP.Net定时任务执行相关推荐

  1. 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler...

    在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...

  2. C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器

    必须JobManager初始化 方式1: public void Start()         {             JobManager.AddJob(() => FetchingDa ...

  3. 在 ASP.NET 中执行 URL 重写

    在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...

  4. ASP.NET 定时执行任务(定时器)

    ASP.NET 定时执行任务(定时器)[日期:2010-12-15] 来源:Net探索者  作者:未知 [字体:大 中 小] 服务器端采用C#语法: 1.在Global.asax文件中导入命名空间 & ...

  5. springboot 2.x 使用定时任务执行多次问题

    使用了多个定时任务,会出现执行多次的情况 在springboot已经集成了quartz框架 只需在配置文件中加上 该配置就ok了 #解决定时任务执行多次的问题 org.quartz.jobStore. ...

  6. spring定时任务执行两次的原因与解决方法

    spring定时任务执行两次的原因与解决方法 参考文章: (1)spring定时任务执行两次的原因与解决方法 (2)https://www.cnblogs.com/yolanda-lee/p/7339 ...

  7. Zeus源码解读之定时任务执行与手动执行任务的过程分析

    Zeus源码解读之定时任务执行与手动执行任务的过程分析 zeus集群依赖任务执行模式  宙斯中任务出去任务独立调度之外,支持任务直接的复杂依赖调度,如下图一所示: 图1  A为根任务,B,C依赖A任务 ...

  8. 解决spring定时任务执行两次和tomcat部署缓慢的问题

    解决spring定时任务执行两次和tomcat部署缓慢的问题 参考文章: (1)解决spring定时任务执行两次和tomcat部署缓慢的问题 (2)https://www.cnblogs.com/Si ...

  9. springBoot 定时任务执行一段时间后失效

    问题描述: springBoot 定时任务执行一段时间后失效,定时任务调用http过一段时间后什么异常也没有 原因:http请求僵死,导致线程也不往下执行,最终导致后面的定时任务也不执行: 解决方法: ...

最新文章

  1. Java 8学习资料汇总
  2. 表决器c语言课程设计,项目二:玩转RGB点阵屏——表情表决器
  3. 《精通Unreal游戏引擎》一第4步 使用BSP创建地图
  4. SpringSecurity分布式整合之实现思路分析
  5. Composer报错Could not find a matching version of package解决方式
  6. 【AI视野·今日Robot 机器人论文速览 第十七期】Thu, 1 Jul 2021
  7. java comparable接口_浅谈程序接口
  8. MyBatis的CRUD操作
  9. Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
  10. GitHub 简单教程
  11. Glide 缓存与解码复用
  12. html+css基础-3-flex,浏览器内核,HTML5新特性
  13. CrossApp 1.1.6新鲜出炉
  14. java登陆注册界面_java编写登陆注册页面(简单一点的,连接数据库)
  15. MySQL技术:InnoDB 存储引擎(不同版本的 Master Thread 工作方式)
  16. Ubuntu18.04自带火狐浏览器设置语言为中文
  17. 【神奇的bug】main方法无法执行
  18. word2016(office 365)中安装mathtype相关问题及解决办法
  19. 以下是一段歌词,请从这段歌词中统计出朋友出现的次数
  20. Evaluate之迷思

热门文章

  1. LeetCode第 146 号问题: LRU 缓存机制
  2. H5多媒体(用面向对象的方法控制视频、音频播放、暂停、延时暂停)
  3. PAT L2-014. 列车调度
  4. 多个ViewPager引发的Fragment未初始化
  5. 安装Exchange2013,FMS服务无法达到启动状态
  6. Groovy学习摘要
  7. python运维开发之socket网络编程01
  8. hp服务器ilo批量配置脚本
  9. 《智慧书》格言241-250
  10. Java中如何实现序列化,有什么意义?