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 SendEmailAsync()
{
NlogHelper.quartzLogger.Info("开始 SendEmailAsync");
// 从工厂中获取调度程序实例
NameValueCollection props = new NameValueCollection
{
{ "quartz.serializer.type", "binary" }
};
StdSchedulerFactory factory = new StdSchedulerFactory(props);
//通过工场类获得调度器
var _scheduler = await factory.GetScheduler();
//开启调度器
await _scheduler.Start();
//创建触发器(也叫时间策略)
var trigger = TriggerBuilder.Create()
.StartNow()
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever())//每10秒执行一次
//.WithSimpleSchedule(x => x.WithIntervalInMinutes(5).RepeatForever()) //每5分钟执行一次
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(8, 0)) //每天6:30执行
.Build();
//创建作业实例
//Jobs即我们需要执行的作业
var jobDetail = JobBuilder.Create()
.WithIdentity("Myjob", "group")//我们给这个作业取了个“Myjob”的名字,并取了个组名为“group”
.Build();
//将触发器和作业任务绑定到调度器中
await _scheduler.ScheduleJob(jobDetail, trigger);
}
}
}