首页 > 解决方案 > 每天上午 12 点和下午 12 点在 .net 核心中使用 Quartz 作业调度程序

问题描述

在 .NET Core 5 Web API 项目中,我有一个作业调度程序,它正在更新数据库中的某些内容。

我想每天在上午 12 点和下午 12 点运行该作业调度程序两次。cron 表达式会是什么?

我怎样才能在一天内运行两次 Quartz 作业调度程序?

这是调度程序启动的代码:

public async Task StartAsync(CancellationToken cancellationToken)
{
    Scheduler = await _schedulerFactory.GetScheduler(cancellationToken);
    Scheduler.JobFactory = _jobFactory;
           
    var job2 = new JobSchedule(jobType: typeof(MCBJob),
                cronExpression: "0 0 0/12 * * ");

    var mcbJob = CreateJob(job2);
    var mcbTrigger = CreateTrigger(job2);
             
    await Scheduler.ScheduleJob(mcbJob, mcbTrigger, cancellationToken);

    await Scheduler.Start(cancellationToken);
}

标签: asp.net-corequartz-schedulerschedulerquartz.net

解决方案


您可以用 分隔值,以指定单个值。

https://en.wikipedia.org/wiki/Cron#CRON_expression

4   -> 4
0-4 -> 0,1,2,3,4
*/4 -> 0,4,8,12,...,52,56
0,4 -> 0,4

我们现在可以建立时间表:

0 0 0,12 * *
| |  |   | every month
| |  |   every day
| |  at hour 0 and 12
| at minute 0
at first second

您可以使用https://crontab.guru/以交互方式构建 cron 表达式。


推荐阅读