Я хочу опубликовать свой ответ. Я использовал Recurring job с уникальным идентификатором (т. Е. $ "Userid_ {job.UserId}"), который является первым параметром в Recurring.AddOrUpdate () , с помощью которого отдельные повторяющиеся задания будет создан для каждого пользователя. Пожалуйста, посмотрите на код ниже, чтобы понять. Теперь Hangfire создаст 4 повторяющихся задания для 4 разных пользователей с разными частотами.
List<Scheduler> list = new List<Scheduler>
{
new Scheduler { EveryXMinutes = 3, UserId = 1023028, On = true },
new Scheduler { EveryXMinutes = 5, UserId = 1023023, On = true },
new Scheduler { EveryXMinutes = 10, UserId = 1023025, On = true },
new Scheduler { EveryXMinutes = 15, UserId = 1023027, On = true }
};
foreach (var job in list)
{
if (job.On)
{
RecurringJob.AddOrUpdate($"userid_{job.UserId}", () => demoService.RunTaskDemo2(job.UserId), $"*/{job.EveryXMinutes} * * * *");
}
else
{
RecurringJob.RemoveIfExists($"userid_{job.UserId}");
}
}
RunTaskDemo2 (int) - это общий метод, который выполняется для каждого пользователя
public void RunTaskDemo2(int userid)
{
// Any code of your own
Console.WriteLine("--------------&&&&&----------------------");
Console.WriteLine($"RUNNING TASK FOR USERID {userid} - {i.ToString()}");
Console.WriteLine("--------------^^^^^^^----------------------");
}
Я надеюсь, что это решение.