Scheduler.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using ProjectBase.Data.BaseDAL;
  7. using ProjectBase.Data.Logs;
  8. using Quartz;
  9. using Quartz.Impl;
  10. using SIMDP.Model;
  11. namespace SIMDP.BLL
  12. {
  13. public class Scheduler
  14. {
  15. string timeSpan = "0 0 11 * * ?"; //每天11点执行
  16. IScheduler schedulers;
  17. IJobDetail jobs;
  18. /// <summary>
  19. /// 开启定时任务
  20. /// </summary>
  21. public void Schedule()
  22. {
  23. try
  24. {
  25. List<MoSystemParameter> paraList = BLLFactory<BlSystemParameter>.Instance.GetAll();
  26. bool disk = paraList.Find((MoSystemParameter para) => para.ParameterName == "DiskCleaningMode").ParameterValid;
  27. bool years = paraList.Find((MoSystemParameter para) => para.ParameterName == "LifetimeClearance").ParameterValid;
  28. if (disk == false && years == false)
  29. {
  30. return;
  31. }
  32. //1.首先创建一个作业调度池
  33. ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
  34. schedulers = schedulerFactory.GetScheduler();
  35. //2.创建出来一个具体的作业
  36. if (disk)
  37. {
  38. jobs = JobBuilder.Create<Job_Timespan>().UsingJobData("clearMode", "Disk").Build();
  39. }
  40. if (years)
  41. {
  42. jobs = JobBuilder.Create<Job_Timespan>().UsingJobData("clearMode", "Year").Build();
  43. }
  44. #region
  45. //DateTime StartTimelm = DateTime.ParseExact("20180716135400", "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
  46. DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now, 0);
  47. #endregion
  48. //3.创建并配置一个触发器 时间段A
  49. #region
  50. ICronTrigger triggers;
  51. triggers = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime)
  52. .WithCronSchedule(timeSpan)
  53. .Build();
  54. #endregion
  55. //4.加入作业调度池中
  56. schedulers.ScheduleJob(jobs, triggers);
  57. //5.开始运行
  58. schedulers.Start();
  59. //schedulers[0].Start();
  60. }
  61. catch (Exception ex)
  62. {
  63. LogHelper.log.Error(string.Format("开启定时任务出现错误:{0}", ex.ToString()));
  64. }
  65. }
  66. /// <summary>
  67. /// 关闭定时任务
  68. /// </summary>
  69. /// <returns></returns>
  70. public bool Stop()
  71. {
  72. try
  73. {
  74. schedulers.Shutdown();
  75. return true;
  76. }
  77. catch (Exception ex)
  78. {
  79. LogHelper.log.Error(string.Format("关闭定时任务出现错误:{0}", ex.ToString()));
  80. return false;
  81. }
  82. }
  83. }
  84. }