#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(); 
 | 
        } 
 | 
    } 
 | 
} 
 |