定时任务 winform开发
在项目中我们经常遇到与时间结合的无限或者有限轮回的任务。例如每月一号统计工作量,基本这种情况,都会是设置定时任务,定时执行。好了,下面就记录一下定时任务的开发吧。
首先描述一下开发思路:
建立一个winform控制台程序,手动触发定时任务的开始,然后执行。项目中需要引用的dll:


好了,开始上代码:
public class QuartRunner
{ ///
/// 调度器工厂
///
ISchedulerFactory factory;
///
/// 调度器
///
public static IScheduler scheduler; ///
/// 输出任务情况
///
public static Form1 msgInfos = new Form1(); #region 方法 public QuartRunner(Form1 from)
{ from = msgInfos;
} ///
/// 定时任务开启
///
public void Start()
{ factory = new StdSchedulerFactory();
scheduler = factory.GetScheduler();
Rank("0 25 13 ? * *");
LookContractLog(1); }
//指定时间点触发任务
public void Rank(string cronExpression)
{
IJobDetail job = JobBuilder.Create().Build();
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithCronSchedule(cronExpression)
.Build();
scheduler.ScheduleJob(job, trigger);
scheduler.Start();
}
//每几分钟跑一次服务
public void LookContractLog(int minutes)
{
IJobDetail job = JobBuilder.Create().Build();
ITrigger trigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInMinutes(minutes).RepeatForever())
.Build();
scheduler.ScheduleJob(job, trigger);
scheduler.Start();
} #endregion #region 定时任务参考参数 /***定点任务执行
* 0 0 12 * * ? 每天12点触发
0 15 10 ? * * 每天10点15分触发
0 15 10 * * ? 每天10点15分触发
0 15 10 * * ? * 每天10点15分触发
0 15 10 * * ? 2005 2005年每天10点15分触发
0 * 14 * * ? 每天下午的 2点到2点59分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 2点10分和2点44分触发 (特殊情况,在一个时间设置里,执行两次或两次以上的情况)
0 59 2 ? * FRI 每周5凌晨2点59分触发;
0 15 10 ? * MON-FRI 从周一到周五每天上午的10点15分触发
0 15 10 15 * ? 每月15号上午10点15分触发
0 15 10 L * ? 每月最后一天的10点15分触发
0 15 10 ? * 6L 每月最后一周的星期五的10点15分触发
0 15 10 ? * 6L 2002-2005 从2002年到2005年每月最后一周的星期五的10点15分触发
0 15 10 ? * 6#3 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节) **/ #endregion
}
上面的两个细节类(RankQuartz,LookContractQuartz),下面展示一个代码:主要是继承IJob类,并且重写方法Execute
public class RankQuartz : IJob
{ public RankQuartz()
{ } public void Execute(IJobExecutionContext context)
{
try
{ //具体细节的处理
}
catch (Exception ex)
{
_Logger.Logger_Info($"{DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")}:执行排行活动任务时,出现问题:{ex.Message} ");
}
}
}
想要调用,就直接实例化QuartRunner类就可以了
以上,over,以后争取用一下网上的统一管理定时任务的源码,学习一下。
定时任务 winform开发的更多相关文章
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
- Java进击C#——应用开发之WinForm开发
本章简言 上一章笔者介绍了关于WinForm环境.这一章笔者将继续讲WinForm.只不过更加的面向开发了.事实就是在学习工具箱里面的控件.对于WinForm开发来讲,企业对他的要求并没有那么高.但是 ...
- WinForm开发-界面控件到实体,实体到界面控件自动绑定
在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...
- WPF与WinForm开发有什么区别?
转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比 ...
- 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
在上篇随笔<在Winform开发中使用日程控件XtraScheduler>中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...
- Navi.Soft30.框架.WinForm.开发手册
阅读导航 Navi.Soft30.Core类库.开发手册 http://www.cnblogs.com/xiyang1011/p/5709489.html Navi.Soft30.框架.WinForm ...
- Winform开发的界面处理优化
在Winform开发中,客户体验是个很好的参考性指标,如果一个功能使用的时候感觉很流畅,说明我们的程序执行效率还不错,但是随着数据的真多,原先可能流程的地方可能会变得比较卡,这时候就需要追本索源,找到 ...
- C# WinForm开发系列 - ListBox/ListView/Panel
转自会飞的小猪文章 C# WinForm开发系列 - ListBox/ListView/Panel 在博客园看到了一篇博文,觉得很不错,就转载过来了. 包含自定义绘制的ListBox, 带拖动, ...
随机推荐
- linux下mysql修改字符集
# 编辑/etc/my.cnfvim /etc/my.cnf # 在[mysqld]标签下添加下面内容default-storage-engine = innodbinnodb_file_per_ta ...
- Scrapy:Python实现scrapy框架爬虫两个网址下载网页内容信息——Jason niu
import scrapy class DmozSpider(scrapy.Spider): name ="dmoz" allowed_domains = ["dmoz. ...
- PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并《测试集辛烷值含量预测结果对比》—Jason niu
load spectra; temp = randperm(size(NIR, 1)); P_train = NIR(temp(1:50),:); T_train = octane(temp(1:50 ...
- Desert King POJ - 2728(最优比率生产树/(二分+生成树))
David the Great has just become the king of a desert country. To win the respect of his people, he d ...
- python vs vscode问题汇总
最近在学工程目录章节的时候遭遇了个把 vscode目录管理 造成的问题, 当然第一大原因是: 初学者使用vscode的时候没有将环境设置好..... 闹了好几天的脾气, 这两天才整理好..... 这事 ...
- ISP PIPLINE (十四) AE(自动曝光)
自动曝光可以可以通过调节 模拟增益,数字增益,曝光时间,光圈大小来调剂曝光. 曝光在ISP PIPLINE的位置. (先介绍一个额外的知识点: ) gamma compression(也就是de-ga ...
- Android常规布局方式和方法
一.关于给控件添加ID属性 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xm ...
- Gedit —— 推荐于NOI系列考试(NOIlinux)的轻量编程环境
由于Vim,Emacs上手艰难,Guide又特别难用,Anjuta还闪退 故推荐一款轻量化的编程环境:Gedit(文本编辑器) 配置方法: 1:在桌面上新建main.cpp,打开方式选择使用gedit ...
- 几个VB常见又内涵的错误
第一位内涵的就是:没有对象 找到对象,却发现是别人的对象 不能加载也不能卸载...这到底是什么对象 哈哈哈~
- js实现八皇后,回溯法
八皇后问题:将八个皇后摆在一张8*8的国际象棋棋盘上,使每个皇后都无法吃掉别的皇后,一共有多少种摆法? 两个皇后不能同时在同一行,同一列,和斜对角线的位置上,使用回溯法解决. 从第一行选个位置开始放棋 ...