beta
大石头 编写于 2024-06-20 19:38:10 大石头 提交于 2024-06-20 19:38:25
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 sc = new Scheduler
        {
            ServiceProvider = _serviceProvider,

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

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


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

        return Task.CompletedTask;
    }

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

        return Task.CompletedTask;
    }
}