|
|
|
using Elight.Utility;
|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
using Quartz;
|
|
|
|
using Quartz.Spi;
|
|
|
|
using SqlSugar;
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Reflection.Metadata;
|
|
|
|
using System.Text;
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
namespace Elight.Logic.Job
|
|
|
|
{
|
|
|
|
public class QuartzHostedService : IHostedService
|
|
|
|
{
|
|
|
|
private readonly ISchedulerFactory _schedulerFactory;
|
|
|
|
private readonly IJobFactory _jobFactory;
|
|
|
|
private readonly WsJob _myJob;
|
|
|
|
|
|
|
|
public QuartzHostedService(ISchedulerFactory schedulerFactory, IJobFactory jobFactory, WsJob myJob, IConfiguration configuration)
|
|
|
|
{
|
|
|
|
_schedulerFactory = schedulerFactory;
|
|
|
|
_jobFactory = jobFactory;
|
|
|
|
_myJob = myJob;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
|
|
{
|
|
|
|
IScheduler scheduler = await _schedulerFactory.GetScheduler(cancellationToken);
|
|
|
|
scheduler.JobFactory = _jobFactory;
|
|
|
|
#region 每33秒执行
|
|
|
|
IJobDetail job3 = JobBuilder.Create<WsJob>()
|
|
|
|
.WithIdentity("job3", SchedulerConstants.DefaultGroup)
|
|
|
|
.Build();
|
|
|
|
var trigger3 = TriggerBuilder.Create()
|
|
|
|
.WithIdentity("trigger3") // 给任务一个名字
|
|
|
|
.StartAt(DateTime.Now) // 设置任务开始时间
|
|
|
|
.ForJob("job3", SchedulerConstants.DefaultGroup) //给任务指定一个分组
|
|
|
|
.WithCronSchedule("*/20 * * * * ?")
|
|
|
|
.UsingJobData("k", 321)
|
|
|
|
.Build();
|
|
|
|
await scheduler.ScheduleJob(job3, trigger3, cancellationToken);
|
|
|
|
await scheduler.Start(cancellationToken);
|
|
|
|
#endregion
|
|
|
|
#region 每33秒执行
|
|
|
|
IJobDetail job = JobBuilder.Create<YgJob>()
|
|
|
|
.WithIdentity("job", SchedulerConstants.DefaultGroup)
|
|
|
|
.Build();
|
|
|
|
var trigger = TriggerBuilder.Create()
|
|
|
|
.WithIdentity("trigger") // 给任务一个名字
|
|
|
|
.StartAt(DateTime.Now) // 设置任务开始时间
|
|
|
|
.ForJob("job", SchedulerConstants.DefaultGroup) //给任务指定一个分组
|
|
|
|
.WithCronSchedule("*/20 * * * * ?")
|
|
|
|
.UsingJobData("k", 321)
|
|
|
|
.Build();
|
|
|
|
await scheduler.ScheduleJob(job, trigger, cancellationToken);
|
|
|
|
await scheduler.Start(cancellationToken);
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task StopAsync(CancellationToken cancellationToken)
|
|
|
|
{
|
|
|
|
IScheduler scheduler = await _schedulerFactory.GetScheduler(cancellationToken);
|
|
|
|
await scheduler.Shutdown(cancellationToken);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|