Yuebon.NetCore/Yuebon.Quartz.Jobs/QuartzService.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.Extensions.Hosting;
using System.Reflection;


namespace Yuebon.Quartz.Jobs;

/// <summary>
/// 定时任务启动
/// </summary>
public class QuartzService : IHostedService, IDisposable
{
    private ISchedulerCenter _schedulerCenter;
    private ITaskManagerService _iService;

    public QuartzService(ISchedulerCenter schedulerCenter, ITaskManagerService iService)
    {
        _schedulerCenter = schedulerCenter;
        _iService = iService;
    }

    public async Task StartAsync(CancellationToken cancellationToken)
    {
        Log4NetHelper.Info("开始启动定时任务");
        try
        {
            IEnumerable<TaskManager> list = _iService.GetAllByIsNotDeleteAndEnabledMark();
            //_scheduler =await _schedulerFactory.GetScheduler();
            foreach (TaskManager job in list)
            {
                if (job.Status == 0) //停止
                {
                   await _schedulerCenter.StopScheduleJobAsync(job);
                    //TriggerKey triggerKey = new TriggerKey(job.Id.ToString(), job.GroupName);
                    //// 停止触发器
                    //await _scheduler.PauseTrigger(triggerKey);
                    //// 移除触发器
                    //await _scheduler.UnscheduleJob(triggerKey);
                    //// 删除任务
                    //await _scheduler.DeleteJob(new JobKey(job.Id.ToString()));
                }
                else  //启动
                {
                    Log4NetHelper.Info("启动定时任务" + job.TaskName);
                    //IJobDetail jobDetail;
                    //if (job.IsLocal)
                    //{
                    //    var implementationAssembly = Assembly.Load("Yuebon.Quartz.Jobs");
                    //    var implementationTypes = implementationAssembly.DefinedTypes.Where(t => t.GetInterfaces().Contains(typeof(IJob)));
                    //    var tyeinfo = implementationTypes.Where(x => x.FullName == job.JobCallAddress).FirstOrDefault();
                    //    jobDetail = JobBuilder.Create(tyeinfo).WithIdentity(job.Id.ToString(), job.GroupName).Build();
                    //}
                    //else
                    //{
                    //    jobDetail = JobBuilder.Create<HttpResultfulJob>().WithIdentity(job.Id.ToString(), job.GroupName).Build();
                    //}
                    await _schedulerCenter.AddScheduleJobAsync(job);
                    //jobDetail.JobDataMap["OpenJob"] = job.Id.ToString();  //传递job信息
                    //ITrigger trigger = TriggerBuilder.Create()
                    //    .WithCronSchedule(job.Cron)
                    //    .WithIdentity(job.Id.ToString(), job.GroupName)
后面还有 26 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。