在Hangfire中,我已经成功设置了定期作业,并且如果我愿意,我可以手动触发,这要归功于Web UI及其"触发器"按钮.
RecurringJob.AddOrUpdate(..);
Run Code Online (Sandbox Code Playgroud)
但是我愿意设置一个永远不会自动解雇的工作.仅限WebUi的需求.将其视为一组仅在需要时触发的维护任务.手动.
我想在await状态中添加一个非重新安排的Job,但是无法(听起来不对).
Hangfire可以"仅按需"工作吗?
Edw*_*win 15
我用过这个(hangfire 1.7 on .net 4.6.2)
RecurringJob.AddOrUpdate(() => ..., "0 0 31 2 0");
Run Code Online (Sandbox Code Playgroud)
它在仪表板中显示为:
下一次执行 N/A
在较新版本的 Hangfire 中,您可以简单地使用这个:
RecurringJob.AddOrUpdate(() => ..., Cron.Never());
Run Code Online (Sandbox Code Playgroud)
我知道这与上面所说的基本相同,但是 stackoverflow 不会让我发表评论,因为我的声誉仍然一无所有......
我使用这个CRON表达式为Never:0 0 29 2/12000 WED 午夜,2月29日恰好是每个世纪的星期三.
正如@youen发现的那样,这个表达式会产生更晚的日期."0 0 29 2/12000 MON"
手动或“按需”尚未在主干中实施。但是,您可以使用此 fork来获得该选项。
目前这在Hangfire 的 repo 中被标记为 Work in Progress ,你可以这样使用它:
BackgroundJob.Stash(() => Console.WriteLine("STASHING"));
Run Code Online (Sandbox Code Playgroud)
其中一条评论中提到的另一种方法是在您的站点中的某处放置一个按钮,用于将作业排入队列:
BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));
Run Code Online (Sandbox Code Playgroud)
编辑:2017/12/28:
显然之前的 fork 不会合并回来,因为这个扩展已经支持手动排队作业:
Hangfire.Core.Dashboard.Management
| 归档时间: |
|
| 查看次数: |
4636 次 |
| 最近记录: |