当我有新客户注册未完成该过程时,我会向他们发送一封包含后续步骤的电子邮件。 我需要创建一个在注册后的前 24 小时内每 10 分钟运行一次的作业。 在那之后,还有另一个过程接管。 我像这样安排作业:
RecurringJob.AddOrUpdate(customerId, () => new NewCustomerProcess().checkNewCustomerStatus(customerId)), "*/10 * * * *");
如果我将作业开始时间添加到作业类:
private DateTime _jobstart = DateTime.UtcNow;
我可以在作业中检查它以确定何时经过 24 小时然后删除作业吗?
RecurringJob.RemoveIfExists(customerId);
Hangfire 是否在每次运行时重新实例化作业类?
如果我正确理解你的问题。
Hangfire 每次都会创建作业类的新实例。 因此,如果我需要解决此问题,每次创建作业时,我都会将 DateTime 作为参数传递:
RecurringJob.AddOrUpdate(customerId, () => new
NewCustomerProcess().checkNewCustomerStatus(customerId, DateTime.Now.AddDays(2))), "*/10 * * * *");
然后在检查中NewCustomerStatus与DateTime.Now进行比较。
if (DateTime.Now > dateEnqueued)
{
//Job is complete
return;
}