Quartz.Net
1、Quartz.Net是一个从Java版的Quartz移植过来的定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”、“每天22点执行”、“每月18号的下午执行8次”等各种定时任务。
2、基本概念
Quartz.NEt中的概念:计划者(IScheduler),工作(IJob),触发器(Trigger)。给计划者一个工作(Job),让他在Trigger(什么条件下做这件事)触发的条件下执行这个工作(Job)
将要定时执行的任务的代码写到实现IJob接口的Execute方法中即可,时间到来的时候Execute方法会被调用。
创建一个控制台应用程序来进行测试:
首先在项目中添加引用,在程序包管理器控制台下安装Quartz,输入以下命令进行安装:
Install-Package Quartz -Version 2.5.0
添加一个类来实现IJob接口,实现代码如下:
using Quartz;//添加引用
using System;
namespace ZSZ.test
{
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("任务完成" + DateTime.Now);
}
}
}
把下面的代码写到程序启动的时候,初始化一次即可。
using log4net;
using Quartz;//添加引用
using Quartz.Impl;//添加引用
using Quartz.Spi;//添加引用
using System;
namespace ZSZ.test
{
public class Program
{
public static void Main(string[] args)
{
ILog log = LogManager.GetLogger(typeof(Program));//日志 传入类名
IScheduler sched = new StdSchedulerFactory().GetScheduler();
JobDetailImpl jdBossReport = new JobDetailImpl("jdTest", typeof(TestJob));
IMutableTrigger triggerBossReport = CronScheduleBuilder.DailyAtHourAndMinute(17, 14).Build();//每天 23:45 执行一次
triggerBossReport.Key = new TriggerKey("triggerTest");
sched.ScheduleJob(jdBossReport, triggerBossReport);
sched.Start();
}
}
}
以上实现的是每天固定时间在17:14进行提醒,测试成功