我创建了一个.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:20
和00:00:40
,或者午夜后20秒和午夜后40秒。
检查一下这是否是您想要的cron。其他一切看起来都是正确的。