如何在派生的BackgroundJob类中获取Jobid?

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

如何在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值,因为对此没有重载方法。

c# background jobs aspnetboilerplate
1个回答
1
投票

没有内置的方法。

但是您可以使用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

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