如何手动触发 Hangfire 作业?

问题描述 投票:0回答:4

这个想法是,在加载页面上有一个电子邮件输入字段。一旦用户写完电子邮件并单击“获取电子邮件”按钮,就会触发后台作业。它将检查交易是否完成,一旦完成,它将向用户发送一封电子邮件。有关电子邮件服务的所有必要代码(我使用

mailgun
)都已编写,但我完全不知道如何实现调度程序。

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

c# asp.net-mvc scheduled-tasks scheduler hangfire
4个回答
4
投票

对于任何登陆这里希望手动触发/排队预定作业的人(就像我一样):

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

其中

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


3
投票

您可以使用

Enqueue
手动触发作业

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

@编辑

要运行第二个作业,如果第一个作业成功,您可以使用

ContinueWith()

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

2
投票

@shikyo 提供的答案在 Hangfire 1.7.27 上对我不起作用。然而,这做到了:

IRecurringJobManager.Trigger(HangfireRecurringJobID); 

0
投票

你可以这样

RecurringJob.TriggerJob
© www.soinside.com 2019 - 2024. All rights reserved.