Quartz.Net定时任务简单实用(实例)
一、Quartz.Net是什么?
Quartz.Net是一个定时任务框架
二、有Timer了,为什么需要用Quartz.Net?
Quartz.Net比Timer使用起来更灵活。例如:每个月最后一个星期天23:59分做什么事情,而Timer实现起来就会麻烦很多。
三、Quartz.Net怎么用?
《一、无配置实现》
1. 下载引用3个DLL:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll
下载地址:http://pan.baidu.com/s/1eRC5Iwi
2.创建任务操作类:
- public class TimingJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- //将要定时执行的逻辑代码写于此处
- Console.WriteLine(DateTime.Now.ToString()+"\t工作太久了,休息10分钟吧。");
- }
- }
3.创建处理类、触发器类
- class Program
- {
- static void Main(string[] args)
- {
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler scheduler = sf.GetScheduler(); //创建调度实例
- //创建任务实例
- IJobDetail job = JobBuilder.Create<TimingJob>().WithIdentity(new JobKey("job1")).Build();
- //创建触发器实例
- ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds()).WithCronSchedule("59 59 23 ? * 1L ").Build();
- scheduler.ScheduleJob(job, trigger); //绑定触发器和任务
- scheduler.Start(); //启动监控
- }
- }
《二、通过配置文件实现》
1. 下载引用3个DLL:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll
下载地址:http://pan.baidu.com/s/1eRC5Iwi
2. 创建工作类:
- public class PrintTimeJob : IJob
- {
- public void Execute(IJobExecutionContext context)
- {
- Console.WriteLine(DateTime.Now.ToString()+"工作了很久,休息一会吧!");
- }
- }
3. 工作类、触发器类的配置文件(quartz_jobs.xml)
- <?xml version="1.0" encoding="utf-8" ?>
- <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
- <processing-directives>
- <overwrite-existing-data>true</overwrite-existing-data>
- </processing-directives>
- <schedule> <!--工作类配置-->
- <job>
- <name>PrintTimeJob</name>
- <group>PrintGroup</group>
- <description>RecyclingResourcesJob</description>
- <job-type>SettingMothod.PrintTimeJob, SettingMothod</job-type>
- <durable>true</durable>
- <recover>false</recover>
- </job>
- <trigger> <!--触发器类配置-->
- <cron>
- <name>PrintDateTimeTrigger</name>
- <group>PrintDateTimeTriggerGroup</group>
- <job-name>PrintTimeJob</job-name>
- <job-group>PrintGroup</job-group>
- <cron-expression>59 59 23 ? * 1L </cron-expression> //
- </cron>
- </trigger>
- </schedule>
- </job-scheduling-data>
4. 设置配置文件(App.config)
- <?xml version="1.0" encoding="utf-8" ?>
- <configuration>
- <configSections>
- <section name="quartz" type="System.Configuration.NameValueSectionHandler"/>
- </configSections>
- <quartz>
- <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler"/>
- <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
- <add key="quartz.threadPool.threadCount" value="10"/>
- <add key="quartz.threadPool.threadPriority" value="2"/>
- <add key="quartz.jobStore.misfireThreshold" value="60000"/>
- <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/>
- <!--******************************Plugin配置*********************************************-->
- <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
- <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
- </quartz>
- </configuration>
5. 实例化、启动任务调度。
- class Program
- {
- static void Main(string[] args)
- {
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler(); //创建调度实例
- sched.Start(); //开启调度
- Console.WriteLine("启动成功 ");
- Console.ReadKey();
- }
- }
初次写博客,不足之处请多多指教。
本文源码:http://pan.baidu.com/s/1qXS0vUG
Quartz.Net定时任务简单实用(实例)的更多相关文章
- SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)
最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...
- Linux中的定时任务简单操作实例
今天,我怀着一颗感恩的心,写了一个小小的定时任务,细想还是写个简单的例子吧,希望能帮到你! 首先我在/usr/local/文件夹下创建了一个文件,hah.sh文件 在hah.sh里面编写shell脚本 ...
- Ajax的简单实用实例
我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图:
- jackson的简单实用实例(json)
一个json格式的字符串比如: {"status":10001,"code":"HDkGzI","pubkey":&qu ...
- python--Numpy简单实用实例
# _*_ coding:utf-8 _*_ import numpy as np #创建数组 a=np.array([[1.,7.,0.],[-2.,1.,2.]]) print a #ndarra ...
- 简单实用的PHP防注入类实例
这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下 本文实例讲述了简单实用的PHP防注 ...
- Spring+Quartz 实现定时任务的配置方法
Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...
- SpringBoot集成Quartz实现定时任务
1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...
- C#_简单实用的翻页
简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...
随机推荐
- AutoCAD.Net 实现创建wipeout遮罩实体
[CommandMethod("mywipeout")] public static void mywipeout() { // 获取当前文档和数据库 Document acDoc ...
- Ionic2 快速入门
本文原创版权归 博客园 yan_xiaodi 所有,转载请自觉于篇头位置显示标明原创作者及出处,这是您对作者劳动果实的自觉尊重!! 作者:yan_xiaodi 原文:http://www.cnblog ...
- leetcode-788-Rotated Digits(使用vector替代if else的逐个判断)
题目描述: X is a good number if after rotating each digit individually by 180 degrees, we get a valid nu ...
- Spark 错误日志中看到的一些问题
2014-4-23 18:42:09 org.jivesoftware.spark.util.log.Log error 严重: Unable to contact shared group info ...
- ubuntu 上运行的django 出现No space left on device错误
运行django出现错误信息: [2016-02-16 14:33:24,476 pyinotify ERROR] add_watch: cannot watch /usr/local/lib/pyt ...
- 2016级算法第四次上机-F.AlvinZH的最“长”公共子序列
940 AlvinZH的最"长"公共子序列 思路 DP,难题. \(dp[i][j]\) :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数. 初始化:dp[i][0] ...
- 分享到QQ空间和新浪微博功能
分享到QQ空间 http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://campus.51job.com/cmbnt ...
- CF1097D Makoto and a Blackboard(期望)
[Luogu-CF1097D] 给定 \(n,k\)一共会进行 \(k\) 次操作 , 每次操作会把 \(n\) 等概率的变成 \(n\) 的某个约数 求操作 \(k\) 次后 \(n\) 的期望是多 ...
- Codeforces - tag::flows 大合集 [完坑 x14]
589F 题意:给出n个时间区间,每个区间挑定长的非连续区间,求不同个区间不存在时间冲突的最大定长,输出乘上n 二分图模型+二分长度,左顶点集为区间编号,右顶点集为时间编号(1...10000),汇点 ...
- git获取代码,拉取最新代码,更新代码等
有句话说的很好:git是弓,我们的代码是箭,github就是靶子.我们需要把自己的代码存放到github的仓库上. 下图为截取的阮一峰博客的关于git常用命令总结的一张图片: 1.一开始从零获取代码 ...