无论我输入什么计划,都不会触发我在 Hangfire 中的重复工作。我曾尝试使用 BackgroundJob 来确保某些东西正常工作,并且确实如此。我还检查了数据库,并且“哈希”表正在正确填充预定的作业。

这是我正在使用的代码:

try
{
    using(var server = new BackgroundJobServer(serverOptions,storage))
    {
        Log("Hangfire server started");
        RecurringJob.AddOrUpdate("Mail", () =>
                 _notificationHelper.SendEmail(result)
                 , Cron.MinuteInterval(1), TimeZoneInfo.Local
             );

        //BackgroundJob.Enqueue(() => _notificationHelper.SendEmail(result));
    }
}

那么我在这里做错了什么?

最佳答案

如果您查看 Hangfire 仪表板,它会告诉您有多少个 BackgroundJobServer 正在运行。如果有零个 BackgroundJobServers 正在运行,那么 Hangfire 在启动一个之前不会做任何事情。

c# - Hangfire 中的重复工作不会被解雇-LMLPHP

由于您在 BackgroundJobServer 中使用 using ,因此在创建重复性作业后会对其进行处理。触发循环作业时,BackgroundJobServer 必须处于事件状态,否则不会创建任何作业。您可以在程序开始时启动BackgroundJobServer,并在关闭程序时处置它。或者您可以在单独的 Windows 服务应用程序中运行 BackgroundJobServer,以便在机器开启时它始终在后台运行。

要了解有关设置后台服务器的更多信息,请参阅:http://docs.hangfire.io/en/latest/background-processing/

关于c# - Hangfire 中的重复工作不会被解雇,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50369573/

10-13 06:06