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