Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等。 Quartz.NET允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。

OK,我们来做个简单的例子:

首先,通过NuGet安装Quartz.NET

示例代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. //引入命名空间
  7. using Quartz;
  8. using Quartz.Impl;
  9.  
  10. namespace QuartzDemo
  11. {
  12. class Program
  13. {
  14. static void Main(string[] args)
  15. {
  16. //初始化调度器
  17. ISchedulerFactory schedFact = new StdSchedulerFactory();
  18. var scheduler = schedFact.GetScheduler();
  19. //启动调度器
  20. scheduler.Start();
  21.  
  22. //初始化要执行的任务
  23. var testJob = JobBuilder.Create<MessageLoadJob>().WithDescription("Job description").Build();
  24. //传入参数到任务中
  25. testJob.JobDataMap.Add("ParamKey", "ParamValue");
  26.  
  27. //初始化任务的触发器(CronTrigger)
  28. ITrigger cronTrigger = TriggerBuilder.Create()
  29. .WithIdentity(Guid.NewGuid().ToString())
  30. .WithDescription("Trigger description")
  31. //0秒开始每五秒执行一次
  32. .WithCronSchedule("0/5 * * * * ? *")
  33. .Build();
  34.  
  35. //初始化任务的触发器(SimpleTrigger)
  36. var simpleTrigger = TriggerBuilder.Create()
  37. .StartAt(DateTime.Now)
  38. .EndAt(DateTime.Now.AddDays())
  39. //每三秒执行一次
  40. .WithSimpleSchedule(c =>
                c.WithIntervalInSeconds()
                //.RepeatForever()
                .WithMisfireHandlingInstructionNextWithRemainingCount()
              )
  41. .Build();
  42.  
  43. //将任务添加到调度器中
  44. scheduler.ScheduleJob(testJob, cronTrigger);
  45. //scheduler.ScheduleJob(testJob, simpleTrigger);
  46.  
  47. Console.Read();
  48. }
  49. }
  50.  
  51. //此属性防止任务并行
  52. [DisallowConcurrentExecution]
  53. public class MessageLoadJob : IJob
  54. {
  55. public void Execute(IJobExecutionContext context)
  56. {
  57. var jobDataMap = context.JobDetail.JobDataMap;
  58. var paramValue = jobDataMap["ParamKey"] as string;
  59. Console.WriteLine(string.Format("{0} {1}", paramValue, DateTime.Now));
  60. }
  61. }
  62. }

建议使用CronTrigger表达式定义触发器,灵活性比较高。

好文推荐:http://www.cnblogs.com/knowledgesea/category/719995.html

Quartz.NET基础入门的更多相关文章

  1. Quartz应用实践入门案例二(基于java工程)

    在web应用程序中添加定时任务,Quartz的简单介绍可以参看博文<Quartz应用实践入门案例一(基于Web应用)> .其实一旦学会了如何应用开源框架就应该很容易将这中框架应用与自己的任 ...

  2. Quartz应用实践入门案例一(基于Web环境)

    Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易.只是需要简单的配置一下就能轻松的使用任务调度了.在Quartz中,真正执行的j ...

  3. Quartz任务调度快速入门

    Quartz任务调度快速入门 概述 了解Quartz体系结构 Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器.任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的 ...

  4. 【01】SpringBoot2核心技术-基础入门

    SpringBoot 2 1. SpringBoot2核心技术-基础入门 01 Spring与SpringBoot 1.Spring 能做什么 1.1 Spring的能力 微服务:将一个应用的所有功能 ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. 「译」JUnit 5 系列:基础入门

    原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...

  7. .NET正则表达式基础入门

    这是我第一次写的博客,个人觉得十分不容易.以前看别人写的博客文字十分流畅,到自己来写却发现十分困难,还是感谢那些为技术而奉献自己力量的人吧. 本教程编写之前,博主阅读了<正则指引>这本入门 ...

  8. 从零3D基础入门XNA 4.0(2)——模型和BasicEffect

    [题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...

  9. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

随机推荐

  1. bjwc Day1 暴力大战

    今天终于有题了... 题目是COCI2016/2017 Round #4 T1一看就是NP问题,k<=50,开始想暴力,想了个n^4的,大概能过,就没去管它 T2想得太naive,丢了100分给 ...

  2. zjoi2015d1题解

    闲来无事做了丽洁姐姐的题 t1给一棵树 每个点有点权 每次修改点权 修改后询问每个点到树的带权重心的带权距离是多少 每个点度数不超过20 很显然的一个点分树... 我们记一下 每个点的子树中的所有点到 ...

  3. 【Lintcode】018.Subsets II

    题目: Given a list of numbers that may has duplicate numbers, return all possible subsets Notice Each ...

  4. Pycharm用鼠标滚轮控制字体大小的

    Pycharm用鼠标滚轮控制字体大小的   一.pycharm字体放大的设置 File —> setting —> Keymap —>在搜寻框中输入:increase —> I ...

  5. linux命令:gzip命令

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用.gzip不仅可以用 ...

  6. Brute-Force-Attack on Triple-DES with Reduced Key Space

    题目地址:https://www.mysterytwisterc3.org/en/challenges/level-ii/brute-force-attack-on-triple-des-with-r ...

  7. MFC编辑框数据实时更新问题

    在VC里,很多情况下需要更新控件,也就是调用UpdateData(FALSE);但是如果是在循环中调用该函数,会导致没有时间来刷新界面,消息得不到相应,从外部看来,似乎整个循环只执行了一次Update ...

  8. string.Format的困惑

    今天在执行一个format时出现了这样一个问题,困惑了很久,就是 string.Format("{0:00}",“1”)结果是1 string.Format("{0:00 ...

  9. channelartlist中autoindex无效的解决方法

    {dede:channelartlist}中有使用autoindex无效的解决方法 在设计频道首页的时候,使用{dede:channelartlist}标签时,有很多朋友想做一些高级的开发,让重复的频 ...

  10. 创建Maven项目步骤

    (转自:http://blog.csdn.net/chuyuqing/article/details/28879477) 使用eclipse插件创建一个web project 首先创建一个Maven的 ...