using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ProjectBase.Data.BaseDAL; using ProjectBase.Data.Logs; using Quartz; using Quartz.Impl; using SIMDP.Model; namespace SIMDP.BLL { public class Scheduler { string timeSpan = "0 0 11 * * ?"; //每天11点执行 IScheduler schedulers; IJobDetail jobs; /// /// 开启定时任务 /// public void Schedule() { try { List paraList = BLLFactory.Instance.GetAll(); bool disk = paraList.Find((MoSystemParameter para) => para.ParameterName == "DiskCleaningMode").ParameterValid; bool years = paraList.Find((MoSystemParameter para) => para.ParameterName == "LifetimeClearance").ParameterValid; if (disk == false && years == false) { return; } //1.首先创建一个作业调度池 ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); schedulers = schedulerFactory.GetScheduler(); //2.创建出来一个具体的作业 if (disk) { jobs = JobBuilder.Create().UsingJobData("clearMode", "Disk").Build(); } if (years) { jobs = JobBuilder.Create().UsingJobData("clearMode", "Year").Build(); } #region //DateTime StartTimelm = DateTime.ParseExact("20180716135400", "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture); DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now, 0); #endregion //3.创建并配置一个触发器 时间段A #region ICronTrigger triggers; triggers = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime) .WithCronSchedule(timeSpan) .Build(); #endregion //4.加入作业调度池中 schedulers.ScheduleJob(jobs, triggers); //5.开始运行 schedulers.Start(); //schedulers[0].Start(); } catch (Exception ex) { LogHelper.log.Error(string.Format("开启定时任务出现错误:{0}", ex.ToString())); } } /// /// 关闭定时任务 /// /// public bool Stop() { try { schedulers.Shutdown(); return true; } catch (Exception ex) { LogHelper.log.Error(string.Format("关闭定时任务出现错误:{0}", ex.ToString())); return false; } } } }