如何强制 Quartz 在 ASP.NET Core 中立即启动?
How to force Quartz to start now in 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();
}
}
您可以调用 await sched.TriggerJob(job.Key);
这将创建一个具有即时触发时间和 运行 幕后行为的简单触发器。
对于 cron trigger StartNow()
只是意味着开始计算火灾,它仍然会遵循不是“现在”的时间表。
我有一个作业由 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();
}
}
您可以调用 await sched.TriggerJob(job.Key);
这将创建一个具有即时触发时间和 运行 幕后行为的简单触发器。
对于 cron trigger StartNow()
只是意味着开始计算火灾,它仍然会遵循不是“现在”的时间表。