我使用Quartz.net在我的Windows服务中创建cron计划任务。 我得到一个ThreadAbortedException,我无法弄清楚原因。 当我试图获取默认调度程序时,它会出现。我是红色的,我需要关闭我的调度程序,我做了,但它没有解决问题。 我的功能是在一个帖子中调用的,但我认为这不重要 这是我的代码。
public ITrigger InitCronJob(Type jobClass, string pattern = null) {
ITrigger trigger = null;
try {
this.factories.GetLoggerFactory()
.Log($"Started cron job {jobClass.Name} on {DateTime.Now.ToString(LoggerFactory.dateFormat)}",
LogSeverity.Info);
if (!factories.GetFolderFactory().getConfigFile().ContainsKey("cronPattern") && pattern == null) {
throw new NoDefinedCronPattern("There is no cron pattern defined in the config.");
}
if (this.defaultScheduler == null) {
this.defaultScheduler = StdSchedulerFactory.GetDefaultScheduler(); // problem seams to be here.
}
IJobDetail job = JobBuilder.Create(jobClass).Build();
trigger = TriggerBuilder.Create()
.WithIdentity("myJob - " + jobClass.Name + " - " + Guid.NewGuid().ToString(), "myJob")
.WithCronSchedule(pattern ?? factories.GetFolderFactory().getConfigFile()["cronPattern"])
.StartAt(DateTime.UtcNow)
.WithPriority(1)
.Build();
this.defaultScheduler.ScheduleJob(job, trigger);
this.defaultScheduler.Start();
}
finally {
defaultScheduler?.Shutdown(true);
}
return trigger;
}