C# 在代码中使用Hangfire作业id

C# 在代码中使用Hangfire作业id,c#,jobs,hangfire,C#,Jobs,Hangfire,我正在做一个像这样的Fire and Forget方法调用 BackgroundJob.Enqueue(() => SendEmail(name)); 我想将作业id传递给SendEmail方法并在该方法中使用。将SendEmail方法更改为如下所示 public void SendEmail(string name, string jobId) { //Body of method } BackgroundJob.Enqueue((string jobId) => SendE

我正在做一个像这样的Fire and Forget方法调用

BackgroundJob.Enqueue(() => SendEmail(name));
我想将作业id传递给SendEmail方法并在该方法中使用。

将SendEmail方法更改为如下所示

public void SendEmail(string name, string jobId)
{ 
//Body of method
}
BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));
更改Hangfire呼叫,使其看起来像这样

public void SendEmail(string name, string jobId)
{ 
//Body of method
}
BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));
除非你想运行一个作业,并发送一封完整的电子邮件,否则你可能必须执行以下操作

  var jobId = BackgroundJob.Enqueue(() => TaskToRun);
  BackgroundJob.ContinueWith(jobId, () => SendEmail(name, jobId));
将SendEmail方法更改为如下所示

public void SendEmail(string name, string jobId)
{ 
//Body of method
}
BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));
更改Hangfire呼叫,使其看起来像这样

public void SendEmail(string name, string jobId)
{ 
//Body of method
}
BackgroundJob.Enqueue((string jobId) => SendEmail(name, jobId));
除非你想运行一个作业,并发送一封完整的电子邮件,否则你可能必须执行以下操作

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

简单的方法是添加

PerformContext


到作业方法:。Hangfire论坛主题。

简单的方法是添加

PerformContext


到作业方法:。Hangfire论坛主题。

BackgroundJob.Enqueuestring id=>SendEmailname,id;。如果此方法接受id参数。@我尝试了您的代码段。但是它没有调用该方法。它是否生成错误?@meJustAndrew不,它没有创建新的后台作业。您能告诉我SendEmail方法在哪里/它有什么签名吗?BackgroundJob.Enqueuestring id=>SendEmailname,id;。如果此方法接受id参数。@我尝试了您的代码段。但是它没有调用该方法。它是否生成错误?@meJustAndrew不,它没有创建新的后台作业。您能告诉我SendEmail方法在哪里/它有什么签名吗?有人从范围中引用了类型为“System.String”的错误变量“jobId”,但在使用第二种方法时未定义它。任何方法都无法从作用域中获取类型为“System.String”的错误变量“jobId”,但在使用第二种方法时未定义它