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<MessageJob>().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