gpt4 book ai didi

c# - 我如何定期重新加载 Quartz.Net 中的所有作业和计划?

转载 作者:行者123 更新时间:2023-11-30 21:39:38 34 4
gpt4 key购买 nike

我在 Windows 服务中使用 Quartz.net 来安排我的数据库中存在的作业。

我的用户将拥有此表的前端,他们可以借此更改 CRON 表达式。目前,我的应用程序没有任何逻辑可以在不重新启动服务的情况下更改 CRON 表达式或添加/删除作业(因为这将触发作业的重新加载)。我正在使用以下代码从我的数据库加载所有作业。

protected void LoadJobs()
{
logger.Info("Loading jobs.");
var jobs = middlewareRepository.GeActiveJobs();

foreach (var job in jobs)
{
IJobDetail jobDetail = JobBuilder.Create<JobDespatcher>()
.WithIdentity(job.Description)
.UsingJobData("JobId", job.Id)
.Build();

ITrigger trigger = TriggerBuilder.Create()
.WithCronSchedule(job.CronExpression)
.Build();

scheduler.ScheduleJob(jobDetail, trigger);
logger.InfoFormat("Job with id {0} ({1}) has been scheduled.", job.Id, job.Description);
}
}

我将如何清除调度程序队列并重新加载作业……比如每小时检查一次? Quartz.Net 是否有内置函数来执行此操作?或者我是否必须构建一些逻辑来卸载所有作业/计划并重新加载它们?如果我删除当前正在运行的作业,该作业会停止还是会继续?

如果有任何有关实现此功能的最佳方法的建议,那就太好了。

最佳答案

我认为您可以关闭调度程序并重新启动。

scheduler.Shutdown();
//Recreate the scheduler
//Recreate jobs
scheduler.Start();

关于c# - 我如何定期重新加载 Quartz.Net 中的所有作业和计划?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099225/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com