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));
转载于:https://www.cnblogs.com/wrjhome/p/4517388.html
ASP.Net定时任务执行相关推荐
- 推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件–FluentScheduler...
在C#WINFORM或者是ASP.NET的WEB应用程序中,根据各种定时任务的需求,比如:每天的数据统计,每小时刷新系统缓存等等,这个时候我们得应用到定时器这个东东. .NET Framework有自 ...
- C#/ASP.NET定时任务执行管理器组件–FluentScheduler定时器
必须JobManager初始化 方式1: public void Start() { JobManager.AddJob(() => FetchingDa ...
- 在 ASP.NET 中执行 URL 重写
在 ASP.NET 中执行 URL 重写 发布日期: 8/23/2004 | 更新日期: 8/23/2004 Scott Mitchell 4GuysFromRolla.com 适用范围: Micro ...
- ASP.NET 定时执行任务(定时器)
ASP.NET 定时执行任务(定时器)[日期:2010-12-15] 来源:Net探索者 作者:未知 [字体:大 中 小] 服务器端采用C#语法: 1.在Global.asax文件中导入命名空间 & ...
- springboot 2.x 使用定时任务执行多次问题
使用了多个定时任务,会出现执行多次的情况 在springboot已经集成了quartz框架 只需在配置文件中加上 该配置就ok了 #解决定时任务执行多次的问题 org.quartz.jobStore. ...
- spring定时任务执行两次的原因与解决方法
spring定时任务执行两次的原因与解决方法 参考文章: (1)spring定时任务执行两次的原因与解决方法 (2)https://www.cnblogs.com/yolanda-lee/p/7339 ...
- Zeus源码解读之定时任务执行与手动执行任务的过程分析
Zeus源码解读之定时任务执行与手动执行任务的过程分析 zeus集群依赖任务执行模式 宙斯中任务出去任务独立调度之外,支持任务直接的复杂依赖调度,如下图一所示: 图1 A为根任务,B,C依赖A任务 ...
- 解决spring定时任务执行两次和tomcat部署缓慢的问题
解决spring定时任务执行两次和tomcat部署缓慢的问题 参考文章: (1)解决spring定时任务执行两次和tomcat部署缓慢的问题 (2)https://www.cnblogs.com/Si ...
- springBoot 定时任务执行一段时间后失效
问题描述: springBoot 定时任务执行一段时间后失效,定时任务调用http过一段时间后什么异常也没有 原因:http请求僵死,导致线程也不往下执行,最终导致后面的定时任务也不执行: 解决方法: ...
最新文章
- Java 8学习资料汇总
- 表决器c语言课程设计,项目二:玩转RGB点阵屏——表情表决器
- 《精通Unreal游戏引擎》一第4步 使用BSP创建地图
- SpringSecurity分布式整合之实现思路分析
- Composer报错Could not find a matching version of package解决方式
- 【AI视野·今日Robot 机器人论文速览 第十七期】Thu, 1 Jul 2021
- java comparable接口_浅谈程序接口
- MyBatis的CRUD操作
- Linux中如何恢复rm命令误删除的文件之extundelete编译安装及使用
- GitHub 简单教程
- Glide 缓存与解码复用
- html+css基础-3-flex,浏览器内核,HTML5新特性
- CrossApp 1.1.6新鲜出炉
- java登陆注册界面_java编写登陆注册页面(简单一点的,连接数据库)
- MySQL技术:InnoDB 存储引擎(不同版本的 Master Thread 工作方式)
- Ubuntu18.04自带火狐浏览器设置语言为中文
- 【神奇的bug】main方法无法执行
- word2016(office 365)中安装mathtype相关问题及解决办法
- 以下是一段歌词,请从这段歌词中统计出朋友出现的次数
- Evaluate之迷思