QuartzTask.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. namespace WebAPIBase.Service
  10. {
  11. public class QuartzTask
  12. {
  13. /// <summary>
  14. /// 发邮件
  15. /// </summary>
  16. /// <returns></returns>
  17. public async Task SendEmailAsync()
  18. {
  19. // 从工厂中获取调度程序实例
  20. NameValueCollection props = new NameValueCollection
  21. {
  22. { "quartz.serializer.type", "binary" }
  23. };
  24. StdSchedulerFactory factory = new StdSchedulerFactory(props);
  25. //通过工场类获得调度器
  26. var _scheduler = await factory.GetScheduler();
  27. //开启调度器
  28. await _scheduler.Start();
  29. //创建触发器(也叫时间策略)
  30. var trigger = TriggerBuilder.Create()
  31. .StartNow()
  32. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
  33. //.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
  34. .WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天6:30执行
  35. .Build();
  36. //创建作业实例
  37. //Jobs即我们需要执行的作业
  38. var jobDetail = JobBuilder.Create<SendEmailJob>()
  39. .WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
  40. .Build();
  41. //将触发器和作业任务绑定到调度器中
  42. await _scheduler.ScheduleJob(jobDetail, trigger);
  43. }
  44. }
  45. }