using Org.BouncyCastle.Tls;
|
using Quartz;
|
using Quartz.Impl;
|
using Quartz.Impl.Matchers;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_SystemService.Scheduler
|
{
|
public class SchedulerCenter
|
{
|
/// <summary>
|
/// 调度中心
|
/// </summary>
|
private static IScheduler _scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;
|
|
public SchedulerCenter()
|
{
|
|
}
|
|
public IScheduler center { get => _scheduler; }
|
|
|
public bool IsRun()
|
{
|
return !_scheduler.IsShutdown && _scheduler.IsStarted;
|
}
|
|
/// <summary>
|
/// 添加作业
|
/// </summary>
|
/// <param name="jobparms"></param>
|
public async void AddJob(Sys_Job jobparms)
|
{
|
JobKey jobKey = new JobKey(jobparms.JobName, jobparms.JobGroup);
|
|
Assembly assembly = Assembly.Load(new AssemblyName(jobparms.AssemblyName));
|
Type jobType = assembly.GetType(jobparms.AssemblyName + "." + jobparms.ClassName);
|
|
|
IJobDetail jobDetail = new JobDetailImpl(jobparms.JobName, jobparms.JobGroup, jobType);
|
//jobDetail.JobDataMap.Add("JobParams", PLCClient.Clients.FirstOrDefault());
|
ITrigger trigger;
|
|
trigger = TriggerBuilder.Create()
|
.WithIdentity(jobparms.JobName, jobparms.JobGroup)
|
.StartNow()
|
.WithSimpleSchedule(x => x
|
.WithIntervalInSeconds(jobparms.IntervalSecond)
|
.RepeatForever()
|
)
|
.Build();
|
await _scheduler.ScheduleJob(jobDetail, trigger);
|
}
|
|
/// <summary>
|
/// 获取job
|
/// </summary>
|
/// <param name="jobName"></param>
|
/// <returns></returns>
|
public JobKey? GetJobByJobName(string jobName)
|
{
|
var job = _scheduler.GetJobKeys(GroupMatcher<JobKey>.AnyGroup()).Result.FirstOrDefault(t => t.Name == jobName);
|
return job;
|
}
|
|
|
public bool RemoveJob(JobKey job)
|
{
|
return _scheduler.DeleteJob(job).Result;
|
}
|
|
|
public void Start()
|
{
|
_scheduler.Start();
|
}
|
|
public void Shutdown()
|
{
|
_scheduler.Shutdown(false);//是否等待调度执行完成
|
_scheduler.Clear();
|
_scheduler = StdSchedulerFactory.GetDefaultScheduler().Result;
|
}
|
}
|
}
|