首页 > 解决方案 > 如何强制 Quartz 现在在 ASP.NET Core 中启动?

问题描述

我有一个由 Quartz 在 ASP.NET Core 中安排的作业,每 15 分钟运行一次。

我想最初运行它(强制 Quartz 现在开始)。

我使用以下代码,但它最初不运行该作业并等待 15 分钟开始。

好像.StartNow()不行?

public class JobSchedulerSimple
{
    public static async Task StartSimpleSync()
    {
        ISchedulerFactory sf = new StdSchedulerFactory();
        IScheduler sched = await sf.GetScheduler();

        IJobDetail job = JobBuilder.Create<FileJob>()
            .WithIdentity("ID", "ID")
            .Build();

        ITrigger trigger = TriggerBuilder.Create().WithIdentity("StartSimpleSync", "ID")
            .StartNow()
            .WithCronSchedule("0 0/15 * * * ?") 
            .Build();

        await sched.ScheduleJob(job, trigger);
        await sched.Start();
    }
}

标签: asp.net-corequartz.netquartzihostedservice

解决方案


您可以称await sched.TriggerJob(job.Key);这将创建一个具有立即触发时间的简单触发器,并在后台运行一次行为。

因为 cron triggerStartNow()只是意味着开始计算火灾,它仍然会遵循不是“现在”的时间表。


推荐阅读