TasksExtension.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using Infrastructure;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.Extensions.DependencyInjection;
  4. using Quartz.Spi;
  5. using System;
  6. using ZR.Tasks;
  7. namespace ZR.Admin.WebApi.Extensions
  8. {
  9. /// <summary>
  10. /// 定时任务扩展方法
  11. /// </summary>
  12. public static class TasksExtension
  13. {
  14. public static void AddTaskSchedulers(this IServiceCollection services)
  15. {
  16. if (services == null) throw new ArgumentNullException(nameof(services));
  17. //添加Quartz服务
  18. services.AddSingleton<IJobFactory, JobFactory>();
  19. //添加我们的服务
  20. //services.AddTransient<Job_SyncTest>();
  21. services.AddTransient<ITaskSchedulerServer, TaskSchedulerServer>();
  22. }
  23. /// <summary>
  24. /// 程序启动后添加任务计划
  25. /// </summary>
  26. /// <param name="app"></param>
  27. /// <returns></returns>
  28. public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app)
  29. {
  30. //var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
  31. ITaskSchedulerServer _schedulerServer = app.ApplicationServices.GetRequiredService<ITaskSchedulerServer>();
  32. //var tasks = _tasksQzService.GetList(m => m.IsStart);
  33. var tasks = SqlSugar.IOC.DbScoped.SugarScope.Queryable<Model.System.SysTasks>().Where(m => m.IsStart).ToList();
  34. //程序启动后注册所有定时任务
  35. foreach (var task in tasks)
  36. {
  37. var result = _schedulerServer.AddTaskScheduleAsync(task);
  38. if (result.Result.Code == 200)
  39. {
  40. Console.WriteLine($"注册任务[{task.Name}]ID:{task.ID}成功");
  41. }
  42. }
  43. return app;
  44. }
  45. }
  46. }