【问题标题】:Use Hangfire job id in the code在代码中使用 Hangfire 作业 ID
【发布时间】:2017-03-17 20:51:36
【问题描述】:

我正在执行这样的 Fire-and-Forget 方法调用。

BackgroundJob.Enqueue(() => SendEmail(name));

我想将作业 id 传递给 SendEmail() 方法并在方法中使用它。

【问题讨论】:

  • BackgroundJob.Enqueue((string id) => SendEmail(name, id));。如果此方法接受 id 参数。
  • @meJustAndrew 我试过你的代码 sn-p。但它不会调用该方法。
  • 会产生错误吗?
  • @meJustAndrew 不,它不会创建新的后台作业。
  • 你能告诉我SendEmail方法来自哪里/它有什么签名吗?

标签: c# jobs hangfire


【解决方案1】:

简单的方法是添加

执行上下文

到job方法:。 Hangfire 论坛主题Use Hangfire job id in the code.

【讨论】:

    【解决方案2】:

    SendEmail 方法更改为如下所示...

    public void SendEmail(string name, string jobId)
    { 
    //Body of method
    }
    

    将 Hangfire 调用更改为如下所示...

    BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));
    

    除非您要运行一项工作,并发送一封完整的电子邮件,否则您可能必须执行以下操作...

      var jobId = BackgroundJob.Enqueue(() => TaskToRun);
      BackgroundJob.ContinueWith(jobId, () => SendEmail(name, jobId));
    

    【讨论】:

    • 任何人在使用第二种方法时都会收到此错误“从范围''引用的'System.String'类型的变量'jobId',但未定义”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多