具有延迟时间的重复作业
Recurring Job with delay time
我使用的是 Hangfire 版本“1.6.8”。我想在某些 DateTime 之后使用 Cron.Daily 创建定期作业。是否可以创建具有延迟时间的循环作业?
提前致谢
我想不出任何特别干净的方法。
您可以探索使用 hangfire 计划作业创建 RecurringJob 的途径:
new BackgroundJobClient().Schedule(() => Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World"), Cron.Daily()), startDateTime)
可以将其设置为 运行 计划作业,紧接在定期作业的第一个预期 运行 时间之前,因此 hangfire 运行 计划并创建作业本身.我实际上从未尝试过这样做,所以请测试一下(让我知道它是怎么回事)。
来自HangFire docs, you can use CRON expressions。开始时它们有点难上手,但一旦掌握了结构的窍门,您将能够做任何您想做的事情。请注意,这些是 精确 次,并且没有 "whenever you feel like it after this time." 当你想要它时告诉它 运行。
例如,如果您希望它在每天下午 2 点 运行:
RecurringJob.AddOrUpdate(() => Console.Write("Powerful!"), "0 14 * * *");
0
: 0 分钟
14
:下午 2 点(14:00 时)
*
: 每月的每一天
*
: 一年中的每个月
*
: 一周中的每一天。
试试这个
using (var server = new BackgroundJobServer())
{
BackgroundJob.Schedule(
() => RunJob(),
TimeSpan.FromSeconds(5)
);
}
public static void RunJob()
{
using (var server = new BackgroundJobServer())
{
RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World123"), "* * * * *");
}
}
我使用的是 Hangfire 版本“1.6.8”。我想在某些 DateTime 之后使用 Cron.Daily 创建定期作业。是否可以创建具有延迟时间的循环作业?
提前致谢
我想不出任何特别干净的方法。
您可以探索使用 hangfire 计划作业创建 RecurringJob 的途径:
new BackgroundJobClient().Schedule(() => Hangfire.RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World"), Cron.Daily()), startDateTime)
可以将其设置为 运行 计划作业,紧接在定期作业的第一个预期 运行 时间之前,因此 hangfire 运行 计划并创建作业本身.我实际上从未尝试过这样做,所以请测试一下(让我知道它是怎么回事)。
来自HangFire docs, you can use CRON expressions。开始时它们有点难上手,但一旦掌握了结构的窍门,您将能够做任何您想做的事情。请注意,这些是 精确 次,并且没有 "whenever you feel like it after this time." 当你想要它时告诉它 运行。
例如,如果您希望它在每天下午 2 点 运行:
RecurringJob.AddOrUpdate(() => Console.Write("Powerful!"), "0 14 * * *");
0
: 0 分钟14
:下午 2 点(14:00 时)*
: 每月的每一天*
: 一年中的每个月*
: 一周中的每一天。
试试这个
using (var server = new BackgroundJobServer())
{
BackgroundJob.Schedule(
() => RunJob(),
TimeSpan.FromSeconds(5)
);
}
public static void RunJob()
{
using (var server = new BackgroundJobServer())
{
RecurringJob.AddOrUpdate(() => Console.WriteLine("Hello World123"), "* * * * *");
}
}