HangFire 延迟任务与日期
HangFire delayed tasks with date
如何向 HangFire 任务添加日期?
例如,此代码添加 7 天:
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
TimeSpan.FromDays(7));
但是如果我需要在特定日期运行任务怎么办?
如果年份无关紧要,您可以为此使用 cron 表达式。大多数默认的 cron 实现(如 Hangfire 使用的 NCrontab)不包括年份字段。
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
"30 4 27 6 *");
这个作业会在每年的6月27日凌晨4点30分执行。
正如开发人员回答我的问题 here,您可以简单地使用日期而不是天。
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
new DateTime(2015, 08, 05, 12, 00, 00));
2015 年 5 月 8 日 00:00。
RecurringJobs 的答案是正确的
RecurringJob.Schedule(
() => Console.WriteLine("Reliable!"),
"00 00 05 8 *");
每年 08 月 5 日 运行 00:00
使用 Cron.Yearly()
到 运行 每年在特定日期时间使用一次:
// Will run on 4th of July @ 8 AM UTC every year
BackgroundJob.Schedule(
() => Console.WriteLine("Happy 4th of July!"),
Cron.Yearly(7, 4, 8, 0));
如何向 HangFire 任务添加日期? 例如,此代码添加 7 天:
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
TimeSpan.FromDays(7));
但是如果我需要在特定日期运行任务怎么办?
如果年份无关紧要,您可以为此使用 cron 表达式。大多数默认的 cron 实现(如 Hangfire 使用的 NCrontab)不包括年份字段。
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
"30 4 27 6 *");
这个作业会在每年的6月27日凌晨4点30分执行。
正如开发人员回答我的问题 here,您可以简单地使用日期而不是天。
BackgroundJob.Schedule(
() => Console.WriteLine("Reliable!"),
new DateTime(2015, 08, 05, 12, 00, 00));
2015 年 5 月 8 日 00:00。
RecurringJob.Schedule(
() => Console.WriteLine("Reliable!"),
"00 00 05 8 *");
每年 08 月 5 日 运行 00:00
使用 Cron.Yearly()
到 运行 每年在特定日期时间使用一次:
// Will run on 4th of July @ 8 AM UTC every year
BackgroundJob.Schedule(
() => Console.WriteLine("Happy 4th of July!"),
Cron.Yearly(7, 4, 8, 0));