获取任务本身内的hangfire重复作业的任务ID

时间:2016-12-09 11:06:08

标签: c# asp.net-mvc hangfire

我遇到了一个挂机重复任务的情况,出于调试/记录目的,我想访问该任务的ID。

我创建/注册任务的代码如下:

RecurringJob.AddOrUpdate(Environment.MachineName, () => MyTask(), Cron.MinuteInterval(_delay));

并且要执行的代码我需要记录任务ID(这是机器名称,但显然在服务器场中将为每个服务器注册一个任务)

如何访问正在执行的Action正在运行的任务的ID?

public void MyTask()
{
    var taskId = GetTheHangfireTaskIdThatTriggeredThis();  //this is the code I need
    Debug.WriteLine(taskId);
}

最终,我希望确保任务仅在注册它们的服务器上运行,因为我需要在服务器场中的每台服务器上执行任务(它是从中心位置更新服务器本身的本地缓存)。如果有更好的方法来实现这一点,那么请告诉我。

1 个答案:

答案 0 :(得分:0)

将其更改为传递参数

RecurringJob.AddOrUpdate(Environment.MachineName, () => MyTask(Environment.MachineName), Cron.MinuteInterval(_delay));

public static void MyTask(string taskId)
    {
        if (!taskId.Equals(Environment.MachineName))
        {
            return;
        }

        Debug.WriteLine(taskId);
    }