src/Framework/Quartz/Quartz.Core/QuartzServer.cs

(开头部分) 4KB

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

using NetModular.Lib.Quartz.Abstractions;
using Quartz;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NetModular.Lib.Config.Abstractions;
using Quartz.Impl;

namespace NetModular.Lib.Quartz.Core
{
    public class QuartzServer : IQuartzServer
    {
        private IScheduler _scheduler;
        private readonly ILogger _logger;
        private readonly IServiceProvider _container;

        public QuartzServer(ILogger<QuartzServer> logger, IServiceProvider container)
        {
            _logger = logger;
            _container = container;
        }

        /// <summary>
        /// 启动
        /// </summary>
        public async Task Start(CancellationToken cancellation = default)
        {
            var configProvider = _container.GetService<IConfigProvider>();
            var config = configProvider.Get<QuartzConfig>();
            if (!config.Enabled)
                return;

            //调度器工厂
            var factory = new StdSchedulerFactory(config.ToProps());

            //创建一个调度器
            try
            {
                _scheduler = await factory.GetScheduler(cancellation);

            }
            catch(Exception ex)
            {
                _logger.LogError("创建一个调度器:{@ex}", ex);
            }

            //绑定自定义任务工厂
            _scheduler.JobFactory = new JobFactory(_container);

            //添加任务监听器
            AddJobListener();

            //添加触发器监听器
            AddTriggerListener();

            //添加调度服务监听器
            AddSchedulerListener();
后面还有 113 行代码,解锁后查看完整代码

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

AI 解读

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

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