无论我输入什么计划,都不会触发我在 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 在启动一个之前不会做任何事情。
由于您在 BackgroundJobServer
中使用 using
,因此在创建重复性作业后会对其进行处理。触发循环作业时,BackgroundJobServer
必须处于事件状态,否则不会创建任何作业。您可以在程序开始时启动BackgroundJobServer
,并在关闭程序时处置它。或者您可以在单独的 Windows 服务应用程序中运行 BackgroundJobServer
,以便在机器开启时它始终在后台运行。
要了解有关设置后台服务器的更多信息,请参阅:http://docs.hangfire.io/en/latest/background-processing/
关于c# - Hangfire 中的重复工作不会被解雇,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50369573/