using MESDataExtractQuartz.Job; using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MESDataExtractQuartz { public class Trigger { //调度器 private readonly IScheduler _scheduler; public Trigger() { _scheduler = new StdSchedulerFactory().GetScheduler().Result; } public virtual void Run() { try { // define the job and tie it to our Job class var firstJob = JobBuilder.Create() .WithIdentity("MESTestJob", "MESTestJobGroup") .Build(); var firstTrigger = TriggerBuilder.Create() .WithIdentity("Trigger", "DataMonitorGroup") .StartNow() .WithCronSchedule("0 0 0/2 * * ?") //每两小时执行一次0 0 0/2 * * ? .Build(); var secondJob = JobBuilder.Create() .WithIdentity("SumMLTeamJob", "SumMLTeamJobGroup") .Build(); var secondTrigger = TriggerBuilder.Create() .WithIdentity("ReportYearTrigger", "DataMonitorGroup") .StartNow() .WithCronSchedule("0 35 10 * * ?") //0 0 11 * * ? .Build(); // Tell quartz to schedule the job using our trigger _scheduler.ScheduleJob(firstJob, firstTrigger); _scheduler.ScheduleJob(secondJob, secondTrigger); // Start up the scheduler (nothing can actually run until the scheduler has been started) _scheduler.Start(); } catch (Exception ex) { LogHelper.Error("任务调度启动失败:" + ex.Message); } } public virtual void Stop() { try { if (_scheduler != null) { _scheduler.Shutdown(true); } LogHelper.Info("任务计划停止成功!"); } catch (Exception e) { LogHelper.Error("停止任务计划调度失败", e); throw; } } public virtual void Continue() { try { _scheduler.ResumeAll(); LogHelper.Info("任务计划继续成功!"); } catch (Exception e) { LogHelper.Error("继续任务计划调度失败", e); throw; } } public virtual void Pause() { try { _scheduler.PauseAll(); LogHelper.Info("任务计划暂停成功!"); } catch (Exception e) { LogHelper.Error("暂停任务计划调度失败", e); throw; } } } }