如何在BackgroundJob
的派生类中获取当前职位ID?在构造函数或Execute
方法中。无论如何。
Update1
我正在以另一种方式添加后台作业。 ASP.NET Boilerplate文档中建议的方法。像这样:
await _backgroundJobManager.EnqueueAsync<ImportContactListJob, ImportContactListJobArgs>(
new ImportContactListJobArgs(){someargs});
然后,我的方法从覆盖Execute
继承类中的方法BackgroundJob
开始。
public override void Execute(ImportContactListJobArgs args)
{
// job here
}
我无法在null
中传递EnqueueAsync
值,因为对此没有重载方法。
没有内置的方法。
但是您可以使用ABP的Hangfire Integration并执行this:
为了实现您的目标,只需将
PerformContext
添加到您的工作方法中:public void SendEmail(string name, PerformContext context) { string jobId = context.BackgroundJob.Id; }
并在入队时通过
null
:BackgroundJob.Enqueue(() => SendEmail(name, null));
当实际执行作业时,它将替换为正确的上下文。
我无法在EnqueueAsync中传递空值,因为对此没有重载方法。
将PerformContext
放入ImportContactListJob
的构造函数。
相关:https://github.com/aspnetboilerplate/aspnetboilerplate/issues/4444