首先要引用quartz
using Quartz;
using Quartz.Impl;
using System.Collections.Specialized;
先创建一个Job类
public class MyJob : IJob
{
//必须要继承Ijob
public Task Execute(IJobExecutionContext context)
{
这里调用需要执行的方法
}
}
然后配置连接SQL持久化
NameValueCollection pars = new NameValueCollection
{
//scheduler名字
["quartz.scheduler.instanceName"] = "MyScheduler",
//线程池个数
["quartz.threadPool.threadCount"] = "20",
//类型为JobStoreXT,事务 必须要用这个JobStoreTX
["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz",
//JobDataMap中的数据都是字符串
["quartz.jobStore.useProperties"] = "true",
//数据源名称 自己定义的
["quartz.jobStore.dataSource"] = "myDS",
//数据表名前缀
["quartz.jobStore.tablePrefix"] = "QRTZ_",
//使用Sqlserver的Ado操作代理类
["quartz.jobStore.driverDelegateType"] = "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz",
//数据源连接字符串
//QuartzDBContext= Server=xxx;Database=xxx;User //ID=xxx;Password=xxx;Trusted_Connection=False;Encrypt=True;
["quartz.dataSource.myDS.connectionString"] = QuartzDBContext,
//数据源的数据库
["quartz.dataSource.myDS.provider"] = "SqlServer",
//序列化类型
["quartz.serializer.type"] = "json",//binary
//自动生成scheduler实例ID,主要为了保证集群中的实例具有唯一标识
//["quartz.scheduler.instanceId"] = "AUTO",
//是否配置集群
//["quartz.jobStore.clustered"] = "true",
};
ISchedulerFactory factory = new StdSchedulerFactory(pars);
IScheduler scheduler = await factory.GetScheduler();
///创建任务
var job = JobBuilder.Create<MyJob>()
.WithIdentity("Job1", "JobGroup")
.Build();
//创建触发器
var trigger = TriggerBuilder.Create()
.WithIdentity("Trigger1", "TriggerGroup")
.ForJob(job)
.WithCronSchedule(jobTime, x => x.WithMisfireHandlingInstructionFireAndProceed())
.Build();
if (!scheduler.CheckExists(job.Key).Result)
{
//插入到任务中
await scheduler.ScheduleJob(job, trigger);
}
await scheduler.Start();
到这里就结束了,希望对大家有帮助。