在HangFire

时间:2016-06-02 08:59:36

标签: c# hangfire

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

RecurringJob.AddOrUpdate(..);

enter image description here

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

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

使用Hangfire可以“仅按需”作业吗?

4 个答案:

答案 0 :(得分:6)

我将此CRON表达式用作从不: 0 0 29 2/12000 WED 午夜时分,2月29日恰好是每个世纪的星期三。

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

答案 1 :(得分:4)

手动或"按需提供"尚未在主干中实施。但是您可以use this fork拥有该选项。

目前,这在Hangfire's repo标记为正在进行中,您可以将其用作:

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

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

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

编辑:2017/12/28:

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

Hangfire.Core.Dashboard.Management

enter image description here

答案 2 :(得分:2)

是的,随需应变的工作完全可以通过篝火进行。您可以使用以下命令触发“即发即弃”作业:

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

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

答案 3 :(得分:1)

我用了这个(.net 4.6.2上的hangfire 1.7)

RecurringJob.AddOrUpdate(() => ..., "0 0 31 2 0");

它在仪表板中显示为:

  

下一次执行不适用