我让 Hangfire 以不同的分钟间隔工作。 (最初工作的时间似乎有点随机,但此后效果很好。)
但是,我的日常工作根本没有被解雇。
using var server = new BackgroundJobServer();
Console.WriteLine("Hangfire Server started. Press any key to exit...");
Console.WriteLine($"Started: {DateTime.Now:g}");
Console.WriteLine();
RecurringJob.AddOrUpdate<TaskExecutor>("X", x => x.RunTask("One Time 1"), "0 10 8 8 */1");
RecurringJob.AddOrUpdate<TaskExecutor>("Z", x => x.RunTask("One Time 2"), "0 10 * * * ");
Console.ReadKey();
我预计这两项任务都会在今天 (8/8/2023) 上午 10:00 运行。但谁都没有跑。
有人知道我错过了什么吗?
注意:我的
TaskExecutor.RunTask()
方法没有显示。但我确信这是正确的,因为它在不同的分钟间隔内都运行良好。
原来 Hangfire 默认使用 UTC 时间。该代码使用本地时间按预期工作。
RecurringJobOptions jobOptions = new()
{
TimeZone = TimeZoneInfo.Local
};
RecurringJob.AddOrUpdate<TaskExecutor>("X", x => x.RunTask("One Time 1"), "0 10 8 8 */1", jobOptions);
RecurringJob.AddOrUpdate<TaskExecutor>("Z", x => x.RunTask("One Time 2"), "0 10 * * * ", jobOptions);