Merge branch 'master' into business
智能大石头 编写于 2024-04-07 21:57:51
AntJob
using System;
using System.Threading;
using System.Threading.Tasks;
using AntJob;
using AntJob.Providers;
using Microsoft.Extensions.Hosting;
using NewLife;

namespace HisAgent;

public class JobHost : BackgroundService
{
    private Scheduler _scheduler;
    private readonly IServiceProvider _serviceProvider;

    public JobHost(IServiceProvider serviceProvider) => _serviceProvider = serviceProvider;

    protected override Task ExecuteAsync(CancellationToken stoppingToken)
    {
        var set = AntSetting.Current;

        // 实例化调度器
        var scheduler = new Scheduler
        {
            ServiceProvider = _serviceProvider,

            //// 使用分布式调度引擎替换默认的本地文件调度
            //Provider = new NetworkJobProvider
            //{
            //    Server = set.Server,
            //    AppID = set.AppID,
            //    Secret = set.Secret,
            //    Debug = false
            //}
        };

        scheduler.Join(set.Server, set.AppID, set.Secret, set.Debug);

        // 添加作业
        scheduler.AddHandler<HelloJob>();


        // 启动调度引擎,调度器内部多线程处理
        scheduler.Start();
        _scheduler = scheduler;

        return Task.CompletedTask;
    }

    public override Task StopAsync(CancellationToken cancellationToken)
    {
        _scheduler.TryDispose();
        _scheduler = null;

        return Task.CompletedTask;
    }
}