如何强制 Quartz 现在在 ASP.NET Core 中启动?

Posted

技术标签:

【中文标题】如何强制 Quartz 现在在 ASP.NET Core 中启动?【英文标题】:How to force Quartz to start now in ASP.NET Core? 【发布时间】:2021-12-13 17:54:30 【问题描述】:

我有一个由 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();
    

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何强制 Quartz 现在在 ASP.NET Core 中启动?的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC5+EF6+EasyUI 后台管理系统(84)-Quartz 作业调度用法详解一

在 Asp.NET core 中触发 Quartz 作业时释放上下文

ASP.NET Core2.2+Quartz.Net 实现web定时任务

如何在 ASP.NET MVC 中强制执行关注点分离?

如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?

Asp.net Core Quartz 作业调用控制器方法,但上下文