QuartzTask.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using Quartz;
  2. using Quartz.Impl;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.Specialized;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using Utils;
  10. namespace PMS.NetCore.Service
  11. {
  12. public class QuartzTask
  13. {
  14. /// <summary>
  15. /// 运行定时任务
  16. /// </summary>
  17. /// <returns></returns>
  18. public async Task RunAsync()
  19. {
  20. NlogHelper.quartzLogger.Info("开始 RunAsync");
  21. // 从工厂中获取调度程序实例
  22. //NameValueCollection props = new NameValueCollection
  23. //{
  24. // { "quartz.serializer.type", "binary" }
  25. //};
  26. StdSchedulerFactory factory = new StdSchedulerFactory();
  27. //通过工场类获得调度器
  28. var _scheduler = await factory.GetScheduler();
  29. //开启调度器
  30. await _scheduler.Start();
  31. #region 昆山项目使用定时任务
  32. if (AppSettingsHelper.Configuration["company"]?.ToString() == "kunshan")
  33. {
  34. #region 执行发短信作业 注释掉,暂不执行
  35. ////创建触发器(也叫时间策略)
  36. //var trigger = TriggerBuilder.Create()
  37. // .StartNow()
  38. // //.WithSimpleSchedule(x => x.WithIntervalInMinutes(2).RepeatForever())//每10秒执行一次
  39. // //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  40. // .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
  41. // .Build();
  42. ////创建作业实例
  43. ////Jobs即我们需要执行的作业
  44. //var jobDetailkunshan = JobBuilder.Create<KunshanPayCostSmsJob>()
  45. // .WithIdentity("Myjobkunshan", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  46. // .Build();
  47. ////将触发器和作业任务绑定到调度器中
  48. //await _scheduler.ScheduleJob(jobDetailkunshan, trigger);
  49. #endregion
  50. }
  51. #endregion
  52. #region 中浩德系统使用定时任务
  53. if (AppSettingsHelper.Configuration["company"]?.ToString() == "zhonghaode")
  54. {
  55. #region 执行进度报告发邮件作业
  56. ////创建触发器(也叫时间策略)
  57. var trigger = TriggerBuilder.Create()
  58. .StartNow()
  59. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
  60. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  61. .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
  62. .Build();
  63. //创建作业实例
  64. //Jobs即我们需要执行的作业
  65. var jobDetail = JobBuilder.Create<SendEmailJob>()
  66. .WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  67. .Build();
  68. //将触发器和作业任务绑定到调度器中
  69. await _scheduler.ScheduleJob(jobDetail, trigger);
  70. #endregion
  71. #region 执行给王帅发邮件作业
  72. //创建触发器(也叫时间策略)
  73. var triggerWang = TriggerBuilder.Create()
  74. .StartNow()
  75. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
  76. .WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  77. //.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
  78. .Build();
  79. //创建作业实例
  80. //Jobs即我们需要执行的作业
  81. var jobDetailWang = JobBuilder.Create<SendEmailToChairmanJob>()
  82. .WithIdentity("MyjobWang", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  83. .Build();
  84. //将触发器和作业任务绑定到调度器中
  85. await _scheduler.ScheduleJob(jobDetailWang, triggerWang);
  86. #endregion
  87. }
  88. #endregion
  89. }
  90. }
  91. }