ResultfulApiJobFactory.cs 946 B

123456789101112131415161718192021222324252627282930313233343536
  1. using Quartz;
  2. using Quartz.Spi;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Threading.Tasks;
  7. namespace IMCS.CCS.Service.Jobs
  8. {
  9. /// <summary>
  10. /// IJob 对象无法构造注入 需要此类实现 返回 注入后得 Job 实例
  11. /// </summary>
  12. public class ResultfulApiJobFactory : IJobFactory
  13. {
  14. private readonly IServiceProvider _serviceProvider;
  15. public ResultfulApiJobFactory(IServiceProvider serviceProvider)
  16. {
  17. _serviceProvider = serviceProvider;
  18. }
  19. public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
  20. {
  21. //Job类型
  22. Type jobType = bundle.JobDetail.JobType;
  23. return _serviceProvider.GetService(jobType) as IJob;
  24. }
  25. public void ReturnJob(IJob job)
  26. {
  27. var disposable = job as IDisposable;
  28. disposable?.Dispose();
  29. }
  30. }
  31. }