C# 当Quartz计划程序位于不同时区时执行计划程序
我的应用程序有3个调度程序。从这两个设置了CST时区,另一个没有设置时区,服务器有UTC时区 我注意到它执行CST时区调度器或UTC时区调度器。i、 e.作业A每天都在运行,但作业B和作业c没有按应有的方式执行 我不确定实际的问题是什么 如果有人能帮我解决这个问题 这是我的C# 当Quartz计划程序位于不同时区时执行计划程序,c#,quartz-scheduler,C#,Quartz Scheduler,我的应用程序有3个调度程序。从这两个设置了CST时区,另一个没有设置时区,服务器有UTC时区 我注意到它执行CST时区调度器或UTC时区调度器。i、 e.作业A每天都在运行,但作业B和作业c没有按应有的方式执行 我不确定实际的问题是什么 如果有人能帮我解决这个问题 这是我的global.asax代码: NameValueCollection properties = null; ISchedulerFactory sf = null; IScheduler sched = null; JobDe
global.asax
代码:
NameValueCollection properties = null;
ISchedulerFactory sf = null;
IScheduler sched = null;
JobDetail jobDetail = null;
CronTrigger trigger = null;
properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "RemoteServer";
properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
properties["quartz.threadPool.threadCount"] = "5";
properties["quartz.threadPool.threadPriority"] = "Normal";
sf = new StdSchedulerFactory(properties);
sched = sf.GetScheduler();
sched.Start();
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(Config.SchedulerTimeZone);
jobDetail = new JobDetail("JobA", "default", typeof(JobA));
trigger = new CronTrigger("JobA", "default", Config.CronExpressionJobA);
sched.ScheduleJob(jobDetail, trigger);
jobDetail = new JobDetail("JobB", "default", typeof(JobB));
trigger = new CronTrigger("JobB", "default", Config.CronExpressionJobB);
trigger.TimeZone = timeZoneInfo;
sched.ScheduleJob(jobDetail, trigger); //CST TimeZone
jobDetail = new JobDetail("JobC", "default", typeof(JobC));
trigger = new CronTrigger("JobC", "default", Config.CronExpressionJobC);
trigger.TimeZone = timeZoneInfo;
sched.ScheduleJob(jobDetail, trigger); //CST TimeZone
配置值:
SchedulerTimeZone = "Central Standard Time";
CronExpressionJobA = "0 0 6 * * ? *";
CronExpressionJobB = "0 0 4 ? * SUN *";
CronExpressionJobC = "0 30 4 * * ? *";
用示例编辑:
i、 e
作业的计划时间:
作业A:每天协调世界时早上6:00
作业B:3月1日凌晨4:00(协调世界时上午10:00)
作业C:每天CST时间上午4:30(UTC时间上午10:30)
预期行为:应执行所有三个作业
实际行为:作业A和作业C运行。但是b工作没有
可能的解决方案:
- 由于不同的调度器时区,它将修复所有三个调度器的相同时区
- 命名管道绑定用于使用我的服务和初始化调度程序,我们需要HTTP请求,因此这可能是应用程序池回收后的问题,因此,如果我们将ping调度程序设置为某个间隔,那么它应该修复此问题吗