一、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.创建任务操作类:

  1. public class TimingJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. //将要定时执行的逻辑代码写于此处
  6. Console.WriteLine(DateTime.Now.ToString()+"\t工作太久了,休息10分钟吧。");
  7. }
  8. }

3.创建处理类、触发器类

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. ISchedulerFactory sf = new StdSchedulerFactory();
  6. IScheduler scheduler = sf.GetScheduler(); //创建调度实例
  7. //创建任务实例
  8. IJobDetail job = JobBuilder.Create<TimingJob>().WithIdentity(new JobKey("job1")).Build();
  9. //创建触发器实例
  10. ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds()).WithCronSchedule("59 59 23 ? * 1L ").Build();
  11. scheduler.ScheduleJob(job, trigger); //绑定触发器和任务
  12. scheduler.Start(); //启动监控
  13. }
  14. }

《二、通过配置文件实现》

1. 下载引用3个DLL:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll

下载地址:http://pan.baidu.com/s/1eRC5Iwi

2. 创建工作类:

  1. public class PrintTimeJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. Console.WriteLine(DateTime.Now.ToString()+"工作了很久,休息一会吧!");
  6. }
  7. }

3. 工作类、触发器类的配置文件(quartz_jobs.xml)

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
  3. <processing-directives>
  4. <overwrite-existing-data>true</overwrite-existing-data>
  5. </processing-directives>
  6. <schedule> <!--工作类配置-->
  7. <job>
  8. <name>PrintTimeJob</name>
  9. <group>PrintGroup</group>
  10. <description>RecyclingResourcesJob</description>
  11. <job-type>SettingMothod.PrintTimeJob, SettingMothod</job-type>
  12. <durable>true</durable>
  13. <recover>false</recover>
  14. </job>
  15. <trigger> <!--触发器类配置-->
  16. <cron>
  17. <name>PrintDateTimeTrigger</name>
  18. <group>PrintDateTimeTriggerGroup</group>
  19. <job-name>PrintTimeJob</job-name>
  20. <job-group>PrintGroup</job-group>
  21. <cron-expression>59 59 23 ? * 1L </cron-expression> //
  22. </cron>
  23. </trigger>
  24. </schedule>
  25. </job-scheduling-data>

4.  设置配置文件(App.config)

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="quartz" type="System.Configuration.NameValueSectionHandler"/>
  5. </configSections>
  6. <quartz>
  7. <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler"/>
  8. <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz"/>
  9. <add key="quartz.threadPool.threadCount" value="10"/>
  10. <add key="quartz.threadPool.threadPriority" value="2"/>
  11. <add key="quartz.jobStore.misfireThreshold" value="60000"/>
  12. <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz"/>
  13. <!--******************************Plugin配置*********************************************-->
  14. <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
  15. <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
  16. </quartz>
  17. </configuration>

5. 实例化、启动任务调度。

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. ISchedulerFactory sf = new StdSchedulerFactory();
  6. IScheduler sched = sf.GetScheduler(); //创建调度实例
  7. sched.Start(); //开启调度
  8. Console.WriteLine("启动成功 ");
  9. Console.ReadKey();
  10. }
  11. }

初次写博客,不足之处请多多指教。

本文源码:http://pan.baidu.com/s/1qXS0vUG

Quartz.Net定时任务简单实用(实例)的更多相关文章

  1. SpringBoot定时任务 - 集成quartz实现定时任务(单实例和分布式两种方式)

    最为常用定时任务框架是Quartz,并且Spring也集成了Quartz的框架,Quartz不仅支持单实例方式还支持分布式方式.本文主要介绍Quartz,基础的Quartz的集成案例本,以及实现基于数 ...

  2. Linux中的定时任务简单操作实例

    今天,我怀着一颗感恩的心,写了一个小小的定时任务,细想还是写个简单的例子吧,希望能帮到你! 首先我在/usr/local/文件夹下创建了一个文件,hah.sh文件 在hah.sh里面编写shell脚本 ...

  3. Ajax的简单实用实例

    我将实现一个简单的Ajax页面无刷新进行用户验证案例: 效果如下图:

  4. jackson的简单实用实例(json)

    一个json格式的字符串比如: {"status":10001,"code":"HDkGzI","pubkey":&qu ...

  5. python--Numpy简单实用实例

    # _*_ coding:utf-8 _*_ import numpy as np #创建数组 a=np.array([[1.,7.,0.],[-2.,1.,2.]]) print a #ndarra ...

  6. 简单实用的PHP防注入类实例

    这篇文章主要介绍了简单实用的PHP防注入类实例,以两个简单的防注入类为例介绍了PHP防注入的原理与技巧,对网站安全建设来说非常具有实用价值,需要的朋友可以参考下   本文实例讲述了简单实用的PHP防注 ...

  7. Spring+Quartz 实现定时任务的配置方法

    Spring+Quartz 实现定时任务的配置方法 整体介绍 一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是 ...

  8. SpringBoot集成Quartz实现定时任务

    1 需求 在我的前后端分离的实验室管理项目中,有一个功能是学生状态统计.我的设计是按天统计每种状态的比例.为了便于计算,在每天0点,系统需要将学生的状态重置,并插入一条数据作为一天的开始状态.另外,考 ...

  9. C#_简单实用的翻页

    简单实用的生成翻页HTML辅助类 C# using System.Text; namespace ClassLibrary { /// <summary> /// /// </sum ...

随机推荐

  1. AutoCAD.Net 实现创建wipeout遮罩实体

    [CommandMethod("mywipeout")] public static void mywipeout() { // 获取当前文档和数据库 Document acDoc ...

  2. Ionic2 快速入门

    本文原创版权归 博客园 yan_xiaodi 所有,转载请自觉于篇头位置显示标明原创作者及出处,这是您对作者劳动果实的自觉尊重!! 作者:yan_xiaodi 原文:http://www.cnblog ...

  3. 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 ...

  4. Spark 错误日志中看到的一些问题

    2014-4-23 18:42:09 org.jivesoftware.spark.util.log.Log error 严重: Unable to contact shared group info ...

  5. 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 ...

  6. 2016级算法第四次上机-F.AlvinZH的最“长”公共子序列

    940 AlvinZH的最"长"公共子序列 思路 DP,难题. \(dp[i][j]\) :记录A的前i个字符与B的前j个字符变成相同需要的最小操作数. 初始化:dp[i][0] ...

  7. 分享到QQ空间和新浪微博功能

    分享到QQ空间 http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=http://campus.51job.com/cmbnt ...

  8. CF1097D Makoto and a Blackboard(期望)

    [Luogu-CF1097D] 给定 \(n,k\)一共会进行 \(k\) 次操作 , 每次操作会把 \(n\) 等概率的变成 \(n\) 的某个约数 求操作 \(k\) 次后 \(n\) 的期望是多 ...

  9. Codeforces - tag::flows 大合集 [完坑 x14]

    589F 题意:给出n个时间区间,每个区间挑定长的非连续区间,求不同个区间不存在时间冲突的最大定长,输出乘上n 二分图模型+二分长度,左顶点集为区间编号,右顶点集为时间编号(1...10000),汇点 ...

  10. git获取代码,拉取最新代码,更新代码等

    有句话说的很好:git是弓,我们的代码是箭,github就是靶子.我们需要把自己的代码存放到github的仓库上. 下图为截取的阮一峰博客的关于git常用命令总结的一张图片: 1.一开始从零获取代码 ...