如何以编程方式立即执行ReccurringJob?

时间:2015-04-22 08:04:48

标签: hangfire

我有许多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());

这有效,但它并没有挂钩到定期作业录入报告中;因此,用户看不到LastJobStateLastExecution值的变化。

有没有办法访问RecurringJob本身并触发它以便更新这些值?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用RecurringJob.Trigger("job-id");