using Infrastructure;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Quartz.Spi;
using System;
using ZR.Service.IService;
using ZR.Tasks;
namespace ZR.Admin.WebApi.Extensions
{
///
/// 定时任务扩展方法
///
public static class TasksExtension
{
public static void AddTaskSchedulers(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
//添加Quartz服务
services.AddSingleton();
//添加我们的服务
services.AddTransient();
services.AddTransient();
}
///
/// 程序启动后添加任务计划
///
///
///
public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app)
{
var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
//此写法不通过有待研究
//var _tasksQzService2 = (ISysTasksQzService)services.GetRequiredService(typeof(SysTasksQzService));
ITaskSchedulerServer _schedulerServer = App.GetRequiredService();
var tasks = _tasksQzService.GetWhere(m => m.IsStart);
//程序启动后注册所有定时任务
foreach (var task in tasks)
{
_schedulerServer.AddTaskScheduleAsync(task);
}
return app;
}
}
}