| #region << 版 本 注 释 >> | 
| /*---------------------------------------------------------------- | 
|  * 命名空间:WIDESEAWCS_QuartzJob | 
|  * 创建者:胡童庆 | 
|  * 创建时间:2024/8/2 16:13:36 | 
|  * 版本:V1.0.0 | 
|  * 描述:Job工厂类 | 
|  * | 
|  * ---------------------------------------------------------------- | 
|  * 修改人: | 
|  * 修改时间: | 
|  * 版本:V1.0.1 | 
|  * 修改说明: | 
|  *  | 
|  *----------------------------------------------------------------*/ | 
| #endregion << 版 本 注 释 >> | 
|   | 
| using Microsoft.Extensions.DependencyInjection; | 
| using Quartz.Spi; | 
| using Quartz; | 
| using System; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
|   | 
| namespace WIDESEAWCS_QuartzJob | 
| { | 
|     public class JobFactory : IJobFactory | 
|     { | 
|         /// <summary> | 
|         /// 注入反射获取依赖对象 | 
|         /// </summary> | 
|         private readonly IServiceProvider _serviceProvider; | 
|         public JobFactory(IServiceProvider serviceProvider) | 
|         { | 
|             _serviceProvider = serviceProvider; | 
|         } | 
|         /// <summary> | 
|         /// 实现接口Job | 
|         /// </summary> | 
|         /// <param name="bundle"></param> | 
|         /// <param name="scheduler"></param> | 
|         /// <returns></returns> | 
|         public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler) | 
|         { | 
|             try | 
|             { | 
|                 IServiceScope serviceScope = _serviceProvider.CreateScope(); | 
|                 IJob? job = serviceScope.ServiceProvider.GetService(bundle.JobDetail.JobType) as IJob; | 
|                 return job; | 
|             } | 
|             catch (Exception) | 
|             { | 
|                 throw; | 
|             } | 
|         } | 
|   | 
|         public void ReturnJob(IJob job) | 
|         { | 
|             IDisposable? disposable = job as IDisposable; | 
|             disposable?.Dispose(); | 
|         } | 
|     } | 
| } |