1、使用Nuget引入Quartz
1)可以在Nuget包管理器中搜索Quartz,找到Quartz点击安装
2)在Nuget包管理控制台使用下面命令安装引入
Install-Package Quartz
3)Quartz中使用的命名空间
using Quartz;
using Quartz.Impl;
2、实现Quartz中的IJob接口
[DisallowConcurrentExecutionAttribute] public class MessageJob : IJob { private static Logger logger = LogManager.GetCurrentClassLogger(); public Task Execute(IJobExecutionContext context) { //Console.WriteLine("Info From HelloJob"); //Thread.Sleep(30000); //LogHelper.WriteInfo("Info From HelloJob"); return Task.Run(() => { logger.Info("MessageJob Start"); try { Utils.NotifyMsg(); } catch (Exception ex) { logger.Error(ex.Message); } }); } }
3、配置和启动定时任务
namespace MyConsole{ class Program { static void Main(string[] args) { //创建一个作业调度池 ISchedulerFactory schedf = new StdSchedulerFactory(); IScheduler sched = schedf.GetScheduler().Result; //开始运行 sched.Start(); //创建出一个具体的作业 IJobDetail job = JobBuilder.Create().Build(); //配置一个触发器 //创建出一个具体的作业 //创建触发器 ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .StartNow() .WithCronSchedule("30 0/1 * * * ?")//每分钟的第30秒执行 //0 0/32 19-22 * * ? .Build(); //加入作业调度池中 sched.ScheduleJob(job, trigger).Wait(); } }}
4、cron表达式
从左到右分别为:秒 分 小时 月份中的日期 月份 星期中的日期 年份 (中间用空格隔开)。其中年份可空。
字段 允许值 允许的特殊字符
秒 0-59 , - * /
分 0-59 , - * /
小时 0-23 , - * /
日期 1-31 , - * ? / L W C
月份 1-12 , - * /
星期 1-7 , - * ? / L C #
年 (可选)留空, 1970-2099 , - * /
官方文档:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/index.html