quartz.net线程正在中止

时间:2017-12-09 19:22:48

标签: c# multithreading quartz.net

我使用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;
    }

0 个答案:

没有答案