using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebAPIBase.Utils;
namespace WebAPIBase.Service
{
public class QuartzTask
{
///
/// 运行定时任务
///
///
public async Task RunAsync()
{
NlogHelper.quartzLogger.Info("开始 RunAsync");
// 从工厂中获取调度程序实例
//NameValueCollection props = new NameValueCollection
//{
// { "quartz.serializer.type", "binary" }
//};
StdSchedulerFactory factory = new StdSchedulerFactory();
//通过工场类获得调度器
var _scheduler = await factory.GetScheduler();
//开启调度器
await _scheduler.Start();
#region 执行进度报告发邮件作业
//创建触发器(也叫时间策略)
var trigger = TriggerBuilder.Create()
.StartNow()
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetail = JobBuilder.Create()
.WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetail, trigger);
#endregion
#region 执行给王帅发邮件作业
//创建触发器(也叫时间策略)
var triggerWang = TriggerBuilder.Create()
.StartNow()
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
//.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天8:00执行
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetailWang = JobBuilder.Create()
.WithIdentity("MyjobWang", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetailWang, triggerWang);
#endregion
}
}
}