Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net core 我们是否可以将HangFire配置为在不同的时间间隔安排每个用户的作业?_.net Core_Scheduler_Job Scheduling_Hangfire - Fatal编程技术网

.net core 我们是否可以将HangFire配置为在不同的时间间隔安排每个用户的作业?

.net core 我们是否可以将HangFire配置为在不同的时间间隔安排每个用户的作业?,.net-core,scheduler,job-scheduling,hangfire,.net Core,Scheduler,Job Scheduling,Hangfire,我们想让用户从UI中安排一项工作的时间范围从15分钟到23:59小时是可行的。不同的用户可以选择不同的时间段来运行他们的作业 例如: 场景1:用户A希望安排作业每15分钟运行一次。 场景2:用户B希望安排作业每30分钟运行一次。 依此类推。假设这是一个循环作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。假设这是一个定期作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrU

我们想让用户从UI中安排一项工作的时间范围从15分钟到23:59小时是可行的。不同的用户可以选择不同的时间段来运行他们的作业

例如:
场景1:用户A希望安排作业每15分钟运行一次。
场景2:用户B希望安排作业每30分钟运行一次。

依此类推。

假设这是一个循环作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。

假设这是一个定期作业,您可以将作业uid格式化为“Do Stuff()”。对于每个用户,使用AddOrUpdate()将任务注册到他们自己的cron计划中。

我将发布我自己问题的答案。 我使用了具有唯一标识符的定期作业(即,$“userid{job.userid}”),这是recurtive.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}");
                }
            }

我希望这就是解决方案。

我将针对我自己的问题发布我的答案。 我使用了具有唯一标识符的定期作业(即,$“userid{job.userid}”),这是recurtive.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}");
                }
            }
我希望这就是解决办法