快速阅读

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;
        }
    }

友情提示

​ 我对我的文章负责,发现好多网上的文章 没有实践,都发出来的,让人走很多弯路,如果你在我的文章中遇到无法实现,或者无法走通的问题。可以直接在公众号《爱码农爱生活 》留言。必定会再次复查原因。让每一篇 文章的流程都能顺利实现。


本文由 hcb 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论