using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ProjectBase.Data.BaseDAL;
using ProjectBase.Data.Logs;
using Quartz;
using Quartz.Impl;
using SIMDP.Model;
namespace SIMDP.BLL
{
public class Scheduler
{
string timeSpan = "0 0 11 * * ?"; //每天11点执行
IScheduler schedulers;
IJobDetail jobs;
///
/// 开启定时任务
///
public void Schedule()
{
try
{
List paraList = BLLFactory.Instance.GetAll();
bool disk = paraList.Find((MoSystemParameter para) => para.ParameterName == "DiskCleaningMode").ParameterValid;
bool years = paraList.Find((MoSystemParameter para) => para.ParameterName == "LifetimeClearance").ParameterValid;
if (disk == false && years == false)
{
return;
}
//1.首先创建一个作业调度池
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
schedulers = schedulerFactory.GetScheduler();
//2.创建出来一个具体的作业
if (disk)
{
jobs = JobBuilder.Create().UsingJobData("clearMode", "Disk").Build();
}
if (years)
{
jobs = JobBuilder.Create().UsingJobData("clearMode", "Year").Build();
}
#region
//DateTime StartTimelm = DateTime.ParseExact("20180716135400", "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
DateTimeOffset startTime = DateBuilder.NextGivenSecondDate(DateTime.Now, 0);
#endregion
//3.创建并配置一个触发器 时间段A
#region
ICronTrigger triggers;
triggers = (ICronTrigger)TriggerBuilder.Create().StartAt(startTime)
.WithCronSchedule(timeSpan)
.Build();
#endregion
//4.加入作业调度池中
schedulers.ScheduleJob(jobs, triggers);
//5.开始运行
schedulers.Start();
//schedulers[0].Start();
}
catch (Exception ex)
{
LogHelper.log.Error(string.Format("开启定时任务出现错误:{0}", ex.ToString()));
}
}
///
/// 关闭定时任务
///
///
public bool Stop()
{
try
{
schedulers.Shutdown();
return true;
}
catch (Exception ex)
{
LogHelper.log.Error(string.Format("关闭定时任务出现错误:{0}", ex.ToString()));
return false;
}
}
}
}