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

How to start a scheduled job using Quartz.Net?

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

我想 运行 基于 cron 表达式的代码,例如每 5 分钟。我创建了一个 class MyJob 实现 Ijob 并在 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。其他一切看起来都是正确的。