我使用了这个(hangfire 1.7 在 .net 4.6.2 上)
RecurringJob.AddOrUpdate(() => ..., "0 0 31 2 0");
在仪表板上它显示为:
下次执行时间未知
"0 0 29 2/12000 MON"
将在四年后(即2044年)发生。有人可能会争论说今天制作的几乎所有系统到那时都不再运行。但是那些仍在运行的系统可能需要修复,因此值得考虑在那个日期无意中运行任务的重要性(因为你无法合理地假设有人会记得及时更新它)。这将成为著名的“星期一二月二十九日”错误,那时精通古老C#语言的人将会被支付巨额报酬来修复它。 - youen/12000
部分。它只计划在指定的日期“Mon Feb 29”触发。 - youen在Hangfire的更新版本中,您可以简单地使用以下代码:
RecurringJob.AddOrUpdate(() => ..., Cron.Never());
手动或“按需”尚未在主干中实现。但是,您可以使用这个分支来获得该选项。
目前,在Hangfire的存储库中,此功能标为进行中,您可以像这样使用它:
BackgroundJob.Stash(() => Console.WriteLine("STASHING"));
在评论中提到的另一种方法是在您的网站上有一个按钮,用于排队作业:
BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));
编辑:2017/12/28:
显然,之前的分支不会被合并回来,因为这个扩展已经支持手动排队作业:
是的,使用Hangfire可以完全实现按需作业。您可以使用以下方法触发“fire-and-forget”作业:
BackgroundJob.Enqueue(
() => Console.WriteLine("Simple!"));