QuartzTask.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 WebAPIBase.Utils;
  10. namespace WebAPIBase.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. //创建触发器(也叫时间策略)
  33. var trigger = TriggerBuilder.Create()
  34. .StartNow()
  35. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
  36. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  37. .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
  38. .Build();
  39. //创建作业实例
  40. //Jobs即我们需要执行的作业
  41. var jobDetail = JobBuilder.Create<SendEmailJob>()
  42. .WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  43. .Build();
  44. //将触发器和作业任务绑定到调度器中
  45. await _scheduler.ScheduleJob(jobDetail, trigger);
  46. #endregion
  47. #region 执行给王帅发邮件作业
  48. //创建触发器(也叫时间策略)
  49. var triggerWang = TriggerBuilder.Create()
  50. .StartNow()
  51. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
  52. .WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  53. //.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
  54. .Build();
  55. //创建作业实例
  56. //Jobs即我们需要执行的作业
  57. var jobDetailWang = JobBuilder.Create<SendEmailToChairmanJob>()
  58. .WithIdentity("MyjobWang", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  59. .Build();
  60. //将触发器和作业任务绑定到调度器中
  61. await _scheduler.ScheduleJob(jobDetailWang, triggerWang);
  62. #endregion
  63. }
  64. }
  65. }