ScheduleService.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Quartz.Impl;
  2. using Quartz;
  3. namespace AipGateway.API.Job
  4. {
  5. public class ScheduleService
  6. {
  7. private readonly ILogger<ScheduleService> _log;
  8. private readonly IScheduler _scheduler;
  9. public ScheduleService(ILogger<ScheduleService> logger)
  10. {
  11. _log = logger;
  12. _scheduler = new StdSchedulerFactory().GetScheduler().Result;
  13. }
  14. public IScheduler GetScheduler()
  15. {
  16. return _scheduler;
  17. }
  18. public void Excute<T>() where T : BaseJob, new()
  19. {
  20. var cron = new T().cron;
  21. _log.LogInformation("ScheduleService::Excute, CronExpression ==> {0}", cron);
  22. if (CronExpression.IsValidExpression(cron))
  23. {
  24. var job = JobBuilder.Create<T>().Build();
  25. var trigger = TriggerBuilder.Create().WithCronSchedule(cron).Build();
  26. _scheduler.ScheduleJob(job, trigger);
  27. }
  28. else
  29. {
  30. _log.LogError("ScheduleService::Excute, Invalid CronExpression ==> {0}", cron);
  31. }
  32. }
  33. public void Start()
  34. {
  35. _scheduler.Start();
  36. }
  37. }
  38. }