QuartzTask.cs 1.9 KB

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