如何手动触发Hangfire作业?

时间:2018-11-26 12:35:32

标签: .net asp.net-mvc scheduled-tasks scheduler hangfire

这个想法是,在加载页面上,有一个电子邮件输入字段。用户写完电子邮件并单击“获取电子邮件”按钮后,将触发后台作业。它将检查交易是否完成,一旦完成,它将向用户发送电子邮件。关于电子邮件服务(我使用过mailgun)的所有必要代码已经编写完毕,但是我完全不知道如何实现调度程序。

我应该如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

您可以只使用Enqueue手动触发作业

BackgroundJob.Enqueue(() => Console.WriteLine("Hello, world!"));

@EDIT

要运行第二份工作,如果第一份工作成功,则可以使用ContinueWith()

var id = BackgroundJob.Enqueue<ITask1>(x => Console.WriteLine("First task")); 
if (id != null) 
{ 
    BackgroundJob.ContinueWith<ITask2>(id, x => Console.WriteLine("Second task")); 
}

答案 1 :(得分:0)

对于那些希望手动触发/排队预定工作(如我一样)的人:

_backgroundJobs.ChangeState(jobId, new EnqueuedState(), ScheduledState.StateName);

_backgroundJobs是使用IoC容器注入的IBackgroundJobClient的实现。