54 lines
1.7 KiB
C#
Raw Normal View History

2024-05-16 13:30:30 +08:00
using Quartz.Spi;
using SqlSugar.IOC;
2024-07-01 16:04:10 +08:00
using DOAN.Model.System;
using DOAN.Tasks;
2024-05-16 13:30:30 +08:00
2024-07-01 16:04:10 +08:00
namespace DOAN.Admin.WebApi.Extensions
2024-05-16 13:30:30 +08:00
{
/// <summary>
/// 定时任务扩展方法
/// </summary>
public static class TasksExtension
{
/// <summary>
/// 注册任务
/// </summary>
/// <param name="services"></param>
/// <exception cref="ArgumentNullException"></exception>
public static void AddTaskSchedulers(this IServiceCollection services)
{
if (services == null) throw new ArgumentNullException(nameof(services));
//添加Quartz服务
services.AddSingleton<IJobFactory, JobFactory>();
services.AddTransient<ITaskSchedulerServer, TaskSchedulerServer>();
}
/// <summary>
/// 程序启动后添加任务计划
/// </summary>
/// <param name="app"></param>
/// <returns></returns>
public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app)
{
ITaskSchedulerServer _schedulerServer = app.ApplicationServices.GetRequiredService<ITaskSchedulerServer>();
var tasks = DbScoped.SugarScope.Queryable<SysTasks>()
.Where(m => m.IsStart == 1).ToListAsync();
//程序启动后注册所有定时任务
foreach (var task in tasks.Result)
{
var result = _schedulerServer.AddTaskScheduleAsync(task);
if (result.Result.IsSuccess())
{
Console.WriteLine($"注册任务[{task.Name}]ID{task.ID}成功");
}
}
return app;
}
}
}