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 WIDESEA_Core.QuartzJob { public class JobFactory : IJobFactory { /// /// 注入反射获取依赖对象 /// private readonly IServiceProvider _serviceProvider; public JobFactory(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider; } /// /// 实现接口Job /// /// /// /// 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 ex) { Console.Out.WriteLine(ex.ToString()); throw new Exception(ex.Message); } } public void ReturnJob(IJob job) { IDisposable? disposable = job as IDisposable; disposable?.Dispose(); } } }