如何使用Quartz.Net启动计划作业



我创建了一个.Net 5辅助服务应用程序并安装了Quartz.AspNetCore包。

我想运行基于cron表达式的代码,例如每5分钟运行一次。我创建了一个实现Ijob的类MyJob,并在DI设置期间注册它

public static void Main(string[] args)
{
Host
.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services
.AddQuartz(quartzConfiguration =>
{
quartzConfiguration.ScheduleJob<MyJob>(jobConfiguration =>
{
jobConfiguration.WithCronSchedule("20/20 0 0 ? * * *"); // Every 20 seconds starting at second 20
});
})
.AddQuartzHostedService(quartzConfiguration => // I think this code is useful ?
{
quartzConfiguration.WaitForJobsToComplete = true;
})
.AddHostedService<Worker>();
})
.Build()
.Run();
}

但作业本身从未执行过。当调用quartzConfiguration.AddJob<MyJob>()时,我无法访问方法.WithCronSchedule()

那么,我如何告诉Quartz注册一个作业并基于cron表达式执行它呢?

cron表达式20/20 0 0 ? * * *表示";每20秒,在前20秒之后,在第一小时的第一分钟。

所以基本上,00:00:2000:00:40,或者午夜后20秒和午夜后40秒。

检查一下这是否是您想要的cron。其他一切看起来都是正确的。

最新更新