using Infrastructure; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Quartz.Spi; using System; using System.Threading.Tasks; using ZR.Service.System.IService; using ZR.Tasks; namespace ZR.Admin.WebApi.Extensions { /// <summary> /// 定时任务扩展方法 /// </summary> public static class TasksExtension { public static void AddTaskSchedulers(this IServiceCollection services) { if (services == null) throw new ArgumentNullException(nameof(services)); //添加Quartz服务 services.AddSingleton<IJobFactory, JobFactory>(); //添加我们的服务 //services.AddTransient<Job_SyncTest>(); services.AddTransient<ITaskSchedulerServer, TaskSchedulerServer>(); } /// <summary> /// 程序启动后添加任务计划 /// </summary> /// <param name="app"></param> /// <returns></returns> public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app) { //var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService)); ITaskSchedulerServer _schedulerServer = App.GetRequiredService<ITaskSchedulerServer>(); //var tasks = _tasksQzService.GetList(m => m.IsStart); var tasks = SqlSugar.IOC.DbScoped.SugarScope.Queryable<Model.System.SysTasksQz>().Where(m => m.IsStart).ToList(); //程序启动后注册所有定时任务 foreach (var task in tasks) { var result = _schedulerServer.AddTaskScheduleAsync(task); if (result.Result.Code == 200) { Console.WriteLine($"注册任务[{task.Name}]ID:{task.ID}成功"); } } return app; } } }