我有许多Hangfire定期工作,效果很好。
但是,我需要添加设施以允许用户抢占计划并立即运行任务。
这是我的创业公司:
RecurringJob.AddOrUpdate<SendFilesJob>("SendFilesJob", j => j.Execute(), send_schedule);
我告诉用户作业最后运行的时间以及下次运行的时间,如下所示:
using (var connection = JobStorage.Current.GetConnection())
{
foreach (var recurringJob in connection.GetRecurringJobs())
{
//report LastExecution, NextExecution, LastJobState
}
}
这也显示作业当前正在通过LastJobState
进行处理,这很棒。
但是,当用户抢先立即运行任务时,我会这样称呼它:
BackgroundJob.Enqueue<SendFilesJob>(j => j.Execute());
这有效,但它并没有挂钩到定期作业录入报告中;因此,用户看不到LastJobState
或LastExecution
值的变化。
有没有办法访问RecurringJob
本身并触发它以便更新这些值?
答案 0 :(得分:2)
您可以尝试使用RecurringJob.Trigger("job-id");