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

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

首先,通过NuGet安装Quartz.NET

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//引入命名空间
using Quartz;
using Quartz.Impl; namespace QuartzDemo
{
class Program
{
static void Main(string[] args)
{
//初始化调度器
ISchedulerFactory schedFact = new StdSchedulerFactory();
var scheduler = schedFact.GetScheduler();
//启动调度器
scheduler.Start(); //初始化要执行的任务
var testJob = JobBuilder.Create<MessageLoadJob>().WithDescription("Job description").Build();
//传入参数到任务中
testJob.JobDataMap.Add("ParamKey", "ParamValue"); //初始化任务的触发器(CronTrigger)
ITrigger cronTrigger = TriggerBuilder.Create()
.WithIdentity(Guid.NewGuid().ToString())
.WithDescription("Trigger description")
//0秒开始每五秒执行一次
.WithCronSchedule("0/5 * * * * ? *")
.Build(); //初始化任务的触发器(SimpleTrigger)
var simpleTrigger = TriggerBuilder.Create()
.StartAt(DateTime.Now)
.EndAt(DateTime.Now.AddDays())
//每三秒执行一次
.WithSimpleSchedule(c =>
            c.WithIntervalInSeconds()
            //.RepeatForever()
            .WithMisfireHandlingInstructionNextWithRemainingCount()
          )
.Build(); //将任务添加到调度器中
scheduler.ScheduleJob(testJob, cronTrigger);
//scheduler.ScheduleJob(testJob, simpleTrigger); Console.Read();
}
} //此属性防止任务并行
[DisallowConcurrentExecution]
public class MessageLoadJob : IJob
{
public void Execute(IJobExecutionContext context)
{
var jobDataMap = context.JobDetail.JobDataMap;
var paramValue = jobDataMap["ParamKey"] as string;
Console.WriteLine(string.Format("{0} {1}", paramValue, DateTime.Now));
}
}
}

建议使用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. ACM学习历程—Hihocoder 1164 随机斐波那契(数学递推)

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 大家对斐波那契数列想必都很熟悉: a0 = 1, a1 = 1, ai = ai-1 + ai-2,(i > 1). ...

  2. [CTSC 2012] Cheat

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2806 [算法] 首先建立广义后缀自动机 注意到问题具有单调性 , 不妨对于每组询问二 ...

  3. 【Lintcode】038.Search a 2D Matrix II

    题目: Write an efficient algorithm that searches for a value in an m x n matrix, return the occurrence ...

  4. C#中使用GetCursorPos获取屏幕坐标

    [StructLayout(LayoutKind.Sequential)] public struct POINT { public int X; public int Y; public POINT ...

  5. POCO库中文编程参考指南(10)如何使用TCPServer框架?

    1 TCPServer 框架概述 POCO 库提供TCPServer框架,用以搭建自定义的 TCP 服务器.TCPServer维护一个连接队列.一个连接线程池.连接线程用于处理连接,连接线程只要一空闲 ...

  6. 使用MeshLab的技巧总结(自己原创总结)

    1.放大点的显示,Alt+wheel,即按住Alt键后使用鼠标滑轮改变点的显示大小.

  7. API---CreateIoCompletionPort

    HANDLE WINAPI CreateIoCompletionPort(  __in          HANDLE FileHandle,  __in          HANDLE Existi ...

  8. Android开发中,那些让你觉得相见恨晚的方法、类或接口

    Throwable类中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[],而在StackTraceElement类中有四个方 ...

  9. EIP权限工作流升级说明-2019/5/23

    增加mysql版本在线预览地址:http://www.eipflow.com:3000/

  10. sql中的高级编程(函数,存储过程,视图)

    一.函数:用sql写一个函数,调用这个函数,返回一张数据表table CREATE FUNCTION FunName ( ) RETURNS @TempTable table ( roleid int ...