Hangfire:为重复作业设置结束时间

3
我正在使用Hangfire来处理任务。
我有一个需要在两个时间点之间运行的函数。
例如:开始时间:8:13 结束时间:21:32 间隔:15分钟。
每天都要运行。
这种需求的“表达式”是什么?

也许你需要为此制作一个 cron 表达式,我不确定它是否已经定义。 - jersoft
1个回答

7
Hangfire使用cron(tab)符号表示时间。
您需要将任务添加三次:
13-59/15 8 * * *
*/15 9-20 * * *
0-32/15 21 * * *

使用它:

RecurringJob.AddOrUpdate(() => Console.Write("MyJob!"), "13-59/15 8 * * *");
RecurringJob.AddOrUpdate(() => Console.Write("MyJob!"), "*/15 9-20 * * *");
RecurringJob.AddOrUpdate(() => Console.Write("MyJob!"), "0-32/15 21 * * *");

第一行表示在8点的每个15分钟间隔内,从13到59分钟运行一次。

第二行表示在9点到20点的每个15分钟间隔内运行一次。

第三行表示在21点的每个15分钟间隔内,从0到32分钟运行一次。


谢谢@Rob,但这不是要求。我的工作是在以下时间运行:8:13-8:28..........并在21:32停止间隔。 - Dang.Nguyen
有没有一种表达方式可以实现这个? - Dang.Nguyen
不,据我所知这是不可能的(在cron中也不可能)。它到底哪个部分不符合要求呢? - Rob
我的工作可能在21:13和21:28运行并停止。 但是: RecurringJob.AddOrUpdate(() => Console.Write("MyJob!"), "0-32/15 21 * * *");=> 运行时间为21:00-21:15-21:30而且工作可能在9:13-9:28运行.. 但是 RecurringJob.AddOrUpdate(() => Console.Write("MyJob!"), "*/15 9-20 * * *");=> 运行时间为9:00-9:15.... - Dang.Nguyen
这些结果看起来是正确的,基于你最初的问题。它在指定的时间段内每15分钟运行一次。你能给我展示一个它不应该运行但却运行了的时间吗? - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接