新建解决方案和工程Quartz.net

  使用Power Shell 命令 Install-Package Quartz 导入Quartz.net程序集

  新建一个计划TestJob

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Quartz.net
  7. {
  8. public class TestJob : IJob
  9. {
  10. public void Execute(IJobExecutionContext context)
  11. {
  12. try
  13. {
  14. Console.WriteLine("执行计划...");
  15. }
  16. catch (Exception)
  17. {
  18.  
  19. throw;
  20. }
  21. }
  22. }
  23. }

    从程序中控制计划时间的用法

  1. using Quartz.Impl;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. namespace Quartz.net
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. // 如果配置了Log4Net 可取消注释
  14. //Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter { Level = Common.Logging.LogLevel.Info };
  15.  
  16. // 从工厂里获取调度实例
  17. IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
  18. scheduler.Start();
  19.  
  20. // 创建一个任务
  21. IJobDetail job = JobBuilder.Create<TestJob>()
  22. .WithIdentity("MyJob", "group1")
  23. .Build();
  24.  
  25. // 创建一个触发器
  26. ITrigger trigger = TriggerBuilder.Create()
  27. .WithIdentity("trigger1", "group1")
  28. .StartNow()
  29. .WithSimpleSchedule(x => x
  30. .WithIntervalInSeconds() // 每10秒执行一次
  31. .RepeatForever()) // 无限次执行
  32. .Build();
  33.  
  34. // 每天执行的触发器
  35. ITrigger t = TriggerBuilder.Create()
  36. .WithIdentity("myTrigger", "group2")
  37. .ForJob(job)
  38. .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(, )) // 每天9:30执行一次
  39. //.ModifiedByCalendar("myHolidays") // but not on holidays 设置那一天不知道
  40. .Build();
  41.  
  42. // 每天执行的将触发器换成天的就可以了
  43. scheduler.ScheduleJob(job, trigger);
  44. }
  45. }
  46. }

  从配置文件设置定时计划的用法,先看App.config

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <configSections>
  4. <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  5. </configSections>
  6.  
  7. <quartz>
  8. <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
  9. <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
  10. <add key="quartz.threadPool.threadCount" value="10" />
  11. <add key="quartz.threadPool.threadPriority" value="2" />
  12.  
  13. <add key="quartz.jobStore.misfireThreshold" value="60000" />
  14. <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
  15.  
  16. <!--******************************Plugin配置********************************************* -->
  17. <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz" />
  18. <add key="quartz.plugin.xml.fileNames" value="~/quartz_jobs.xml"/>
  19. </quartz>
  20.  
  21. <startup>
  22. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  23. </startup>
  24. </configuration>

  再看quartz_jobs.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!-- This file contains job definitions in schema version 2.0 format -->
  4. <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
  5. <processing-directives>
  6. <overwrite-existing-data>true</overwrite-existing-data>
  7. </processing-directives>
  8.  
  9. <schedule>
  10. <!--任务-->
  11. <job>
  12. <!--任务名称,同一个group中多个job的name不能相同-->
  13. <name>TestJob</name>
  14. <!--任务分组-->
  15. <group>sampleGroup</group>
  16. <!--任务描述-->
  17. <description>Sample job for Quartz Server</description>
  18. <!--任务类型,任务的具体类型及所属程序集-->
  19. <job-type>Quartz.NETConfig.TestJob, Quartz.NETConfig</job-type>
  20. <durable>true</durable>
  21. <recover>false</recover>
  22. </job>
  23.  
  24. <!--任务触发器-->
  25. <trigger>
  26. <!--简单任务的触发器,可以调度用于重复执行的任务-->
  27. <simple>
  28. <!--触发器名称,同一个分组中的名称必须不同-->
  29. <name>sampleSimpleTrigger</name>
  30. <!--触发器组-->
  31. <group>sampleSimpleGroup</group>
  32. <!--描述-->
  33. <description>Simple trigger to simply fire sample job</description>
  34. <!--要调度的任务名称,该job-name必须和对应job节点中的name完全相同-->
  35. <job-name>TestJob</job-name>
  36. <!--调度任务(job)所属分组,该值必须和job中的group完全相同-->
  37. <job-group>sampleGroup</job-group>
  38. <!--任务开始时间-->
  39. <start-time>2012-04-01T08:00:00+08:00</start-time>
  40. <misfire-instruction>SmartPolicy</misfire-instruction>
  41. <!--任务执行次数 -1 为无限次执行-->
  42. <repeat-count>-1</repeat-count>
  43. <!--任务触发间隔(毫秒)-->
  44. <repeat-interval>10000</repeat-interval>
  45. <!--每3秒中执行一次-->
  46. </simple>
  47. </trigger>
  48.  
  49. <job>
  50. <!--任务名称,同一个group中多个job的name不能相同-->
  51. <name>StatisticsJob</name>
  52. <!--任务分组-->
  53. <group>sampleGroup1</group>
  54. <!--任务描述-->
  55. <description>Sample job for Quartz Server</description>
  56. <!--任务类型,任务的具体类型及所属程序集-->
  57. <job-type>Quartz.NETConfig.StatisticsJob, Quartz.NETConfig</job-type>
  58. <durable>true</durable>
  59. <recover>false</recover>
  60. </job>
  61. <trigger>
  62. <cron>
  63. <name>TriggerJob001</name>
  64. <group>ProjectJobs</group>
  65. <job-name>StatisticsJob</job-name>
  66. <job-group>sampleGroup1</job-group>
  67. <!--秒 分 时 日(星期) 月 年-->
  68. <cron-expression>0/3 * * * * ?</cron-expression>
  69. </cron>
  70. </trigger>
  71.  
  72. <!--每天0点定时执行 0 0 0/1 * * ? -->
  73. <job>
  74. <name>DefaultJob</name>
  75. <group>sampleGroup2</group>
  76. <description>Sample job for Quartz Server</description>
  77. <job-type>Quartz.NETConfig.DefaultJob, Quartz.NETConfig</job-type>
  78. <durable>true</durable>
  79. <recover>false</recover>
  80. </job>
  81. <trigger>
  82. <cron>
  83. <name>TriggerJob002</name>
  84. <group>ProjectJobs</group>
  85. <job-name>DefaultJob</job-name>
  86. <job-group>sampleGroup2</job-group>
  87. <cron-expression>0 0 0/1 * * ?</cron-expression>
  88. </cron>
  89. </trigger>
  90.  
  91. </schedule>
  92. </job-scheduling-data>

  用配置调比较简单

  1. // 从工厂里获取调度实例
  2. IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
  3. scheduler.Start();

  配置的任务也没什么

  1. public class DefaultJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. try
  6. {
  7. // 开始统计数据
  8. Console.WriteLine("开始统计数据...");
  9. }
  10. catch (Exception)
  11. {
  12.  
  13. throw;
  14. }
  15. }
  16. }
  1. public class StatisticsJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. Console.WriteLine("表达式执行调度任务...");
  6. }
  7. }
  1. public class TestJob : IJob
  2. {
  3. public void Execute(IJobExecutionContext context)
  4. {
  5. Console.WriteLine("执行调度任务");
  6. }
  7. }

  以上就是定时计划的用法,可参考文档 http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more-about-triggers.html

Quartz.net 定时计划使用的更多相关文章

  1. 用abp vNext快速开发Quartz.NET定时任务管理界面

    今天这篇文章我将通过实例代码带着大家一步一步通过abp vNext这个asp.net core的快速开发框架来进行Quartz.net定时任务调度的管理界面的开发.大伙最好跟着一起敲一下代码,当然源码 ...

  2. spring quartz分布式任务计划

    spring quartz分布式任务计划 环境: 通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz ...

  3. Oracle定时计划快速使用

    Oracle定时计划快速使用 前言: SQL Server中有相关的定时计划,可以直接打开sql server 的任务管理器进行配置,可以方便.快速实现定时执行相应任务.相应的Oracle也有对应的定 ...

  4. MySQL架构优化:定时计划任务与表分区

    转自: MySQL架构优化实战系列3:定时计划任务与表分区 - 今日头条(TouTiao.com)http://toutiao.com/a6304736482361049345/?tt_from=mo ...

  5. Windows定时计划执行Python

    先看下定时执行的py文件 #coding:gbk from selenium import webdriver import time,os driver = webdriver.PhantomJS( ...

  6. Linux定时计划(crontab)使用说明

    一.设置定时计划步骤 第一步,编缉计划文件:crontab -e 第二步,在文件中写入计划,格式如:minute hour day month week command.如0 8 * * * sh / ...

  7. 【Oracle】Windows定时计划每天备份数据库

    脚本 OracleBakEveryDay.bat @echo off echo ================================================ echo Window ...

  8. spring和Quartz的定时功能

    一:前沿 最近在做一个定时的功能,就是在一定时间内查询订单,然后告诉用户未付款,已付款等消息通知,而且要做集群的功能,这个集群的功能是指,我部署两套代码,其中一个定时的功能在运行,另外一个就不要运行. ...

  9. Hosted Services+Quartz实现定时任务调度

    背景 之前.net core使用quartz.net时,总感觉非常变扭,百度和谷歌了N久都没解决以下问题,造成代码丑陋,非常不优雅: 1.项目启动时,要立刻恢复执行quartz.net中的任务 2.q ...

随机推荐

  1. 网络资源(2) - Maven视频

    2014_08_23 http://v.youku.com/v_show/id_XNDE2NzM0Nzk2.html Maven最佳实践,公司真实环境实践-私服最佳实践 2014_08_24 http ...

  2. Swift——(三)Swift神奇的下划线

    在Swift在.有许多神奇的下划线,在这里,我们将看到神奇的汇总,我希望能够帮助其他很多学习Swift朋友. @Author: twlkyao转载或者引用请保留此行. 1.格式化数字字面量     通 ...

  3. 队列 <queue>

    STL: 队列中pop完成的不是取出最顶端的元素,而是取出最低端的元素.也就是说最初放入的元素能够最先被取出(这种行为被叫做FIFO:First In First Out,即先进先出). queue: ...

  4. sscanf()函数的用法

    来自:http://blog.csdn.net/tigerjibo/article/details/6442151 sscanf 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. ...

  5. oracle_解锁表_解锁用户

    1.解锁用户 以dba身份登录   sqlplus / as sysdba alter user scott account unlock; 2.解锁表 alter   system   kill   ...

  6. SQL代理执行EXE可执行程序

    原文:SQL代理执行EXE可执行程序  1.如果没有启用xp_cmdshell安全配置是不可以使用的-- 启用xp_cmdshellEXEC sp_configure 'xp_cmdshell', 1 ...

  7. youcompleteme install and configure

    三四年前我配置vim插件的时候还都是手动配置,还没有听说vundle这个vim插件管理工具,现在配置vim插件的时候基本上都用vundle,这个插件也确实是方便快捷,只不过这东西时能话了就不清楚里面的 ...

  8. Android安卓安全审计mobiseclab

    关于安卓上的app分析,有非常多的本地化软件能够胜任, 只是,今天给大家介绍一款在线的安全审计,恶意软件(android app)检測和分析工具,mobiseclab, 由于看到国内对此工具的介绍比較 ...

  9. javascirpt怎样模仿块级作用域(js高程笔记)

    因为javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包括函数中而非语句中创建的. 如: function outputNumbers(count){ for(var i= ...

  10. 第4章2节《MonkeyRunner源码剖析》ADB协议及服务: ADB服务SERVICES.TXT翻译参考(原创)

    天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...