Hangfire 作业不在一天中的某个时间运行

问题描述 投票:0回答:1

我让 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()
方法没有显示。但我确信这是正确的,因为它在不同的分钟间隔内都运行良好。

c# cron hangfire
1个回答
0
投票

原来 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);
© www.soinside.com 2019 - 2024. All rights reserved.