在HangFire中设置“按需”唯一作业

在Hangfire中,我已经成功设置了定期作业,并且如果我愿意,我可以手动触发,这要归功于Web UI及其“触发”按钮。

RecurringJob.AddOrUpdate(..); 

在此处输入图像描述

但是我愿意设置一个永远不会自动解雇的工作。 仅限WebUi的需求。 将其视为一组仅在需要时触发的维护任务。 手动。

我想在await状态下添加一个非重新安排的Job,但是无法(听起来不对)。

Hangfire可以“仅按需”工作吗?

我使用这个CRON表达式为Never: 0 0 29 2/12000 WED午夜时分,2月29日恰好是每个世纪的星期三。

正如@youen发现的那样,这个表达式会产生更晚的日期。 “0 0 29 2/12000 MON”

手动或“按需”尚未在主干中实施。 但是,您可以使用此fork来获得该选项。

目前在Hangfire的repo中标记为“正在进行中”,您可以将其用作:

 BackgroundJob.Stash(() => Console.WriteLine("STASHING")); 

其中一条评论中提到的另一种方法是在您的网站中的某个位置放置一个将该作业排入队列的按钮:

 BackgroundJob.Enqueue(() => Console.WriteLine("Simple!")); 

编辑:2017/12/28:

显然前一个fork不会被合并回来,因为这个扩展已经支持手动排队作业:

Hangfire.Core.Dashboard.Management

在此处输入图像描述

是的,随需应变的工作完全可以解决篝火问题。 您可以使用以下命令触发“即发即弃”作业:

 BackgroundJob.Enqueue( () => Console.WriteLine("Simple!")); 

然而,这不会出现在hangfire控制台中,但您可以在代码中使用上面的代码段(也许在点击按钮后?)