快速阅读
quartz.net使用 cron规则触发。使用quartz.net 实现定时执行一些任务 , 利用cron规则来触发。 以及cron表达式的应用 。
定义好job和trigger以后,用scheculer进行绑定,
在trriger中设置指定的触发时间 ,
触发时间 可以写在配置文件中,方便修改
触发器采用cron规则
常见的cron规则
这个规则比较简单,有点混淆的就是 每隔5秒 不能写成“5 ?” ,而是“/5 * ?”
“5 ?” 表示的是每分钟的第5秒执行。 加上/5才表示每5秒执行。
*/5 * * * * ? 每隔5秒执行一次
0 */1 * * * ? 每隔1分钟执行一次
0 0 23 * * ? 每天23点执行一次
0 0 1 * * ? 每天凌晨1点执行一次:
0 0 1 1 * ? 每月1号凌晨1点执行一次
0 0 23 L * ? 每月最后一天23点执行一次
0 0 1 ? * L 每周星期天凌晨1点实行一次
0 26,29,33 * * * ? 在26分、29分、33分执行一次
0 0 0,13,18,21 * * ? 每天的0点、13点、18点、21点都执行一次
Job代码如下:
public class Program
{
private static void Main(string[] args)
{
RunProgramRunExample().GetAwaiter().GetResult();
Console.WriteLine("Press any key to close the application");
Console.ReadKey();
}
private static async Task RunProgramRunExample()
{
try
{
StdSchedulerFactory factory = new StdSchedulerFactory();
IScheduler scheduler = await factory.GetScheduler();
// 定义一个和HelloJob类关联的job
IJobDetail job = JobBuilder.Create<MyJob1>().WithIdentity("job1", "group1").Build();
// 使用trigger去运行job,每2秒一次,一直重复执行
ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds(0)).WithCronSchedule("*/2 * * * * ?").Build();
// 实例开始运行
await scheduler.Start();
// 绑定job和触发器
await scheduler.ScheduleJob(job, trigger);
}
catch (SchedulerException se)
{
Console.WriteLine(se);
}
}
}
class MyJob1 : IJob
{
public Task Execute(IJobExecutionContext context)
{
Console.WriteLine("正在执行第一个job任务");
return null;
}
}
友情提示
我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。
秒分钟小时日月周年