一、新建.NET Framework 4 控制台应用程序 ConsoleApP40
二、选择ConsoleApP40 右键 管理NuGet程序包(N)… 输入 Quartz(为了测试方便 请选择 2.5.0 版本)
添加QuartZ之后还会多出一个文件,job_scheduling_data_2_0.xsd 如图
第一种方式 硬编码方式设置定时任务
代码如下:
using Quartz.Impl;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApP40
{
internal class Program
{
static void Main(string[] args)
{
#region 第一种方式 硬编码方式设置定时任务
//第一种方式 硬编码方式设置定时任务
可以通过配置来设置间隔时间
int a = 10;
//IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
//scheduler.Start();
//var job = JobBuilder.Create<HelloJob>().Build();
可以通过配置来设置间隔时间
var trigger = TriggerBuilder.Create().WithSimpleSchedule(m => m.WithIntervalInSeconds(a).RepeatForever()).StartNow().Build();
//var trigger = TriggerBuilder.Create().WithSimpleSchedule(m => m.WithIntervalInSeconds(1).RepeatForever()).StartNow().Build();
//scheduler.ScheduleJob(job, trigger);
#endregion
创建调度器
//ISchedulerFactory factory = new StdSchedulerFactory();
//var scheduler = await factory.GetScheduler();
//await scheduler.Start();
创建工作
//var job = JobBuilder.Create<Myjob>().WithIdentity("job1", "group1").Build();
创建触发器,设定触发时间,间隔时间,重复频率
//var trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().WithSimpleSchedule(a => a.WithIntervalInSeconds(5).RepeatForever()).Build();
工作和触发器挂在调度器
//await scheduler.ScheduleJob(job, trigger);
Console.Read();
}
}
public class HelloJob : IJob
{
private string name = string.Empty;
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("Quartz 任务调度执行----当前时间: {0} ", DateTime.Now);
}
}
/// <summary>
/// 工作要处理的内容
/// </summary>
//public class Myjob : IJob
//{
// public virtual Task Execute(IJobExecutionContext context)
// {
// return Console.Out.WriteLineAsync($"job工作了,{DateTime.Now}");
// }
//}
}
测试:
第二种方式 job的配置文件配置 Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin 类来处理这个xml文件,同时指定下quartz_jobs.xml的路径,如下所示:使用quartz_jobs.xml 配置文件来创建相关的定时任务需要的参数,在nuget中获取quartz框架的时候,在解决方案中多了一个xsd文件,这个xsd文件是用来写xml时做代码提示用的.
代码如下:
using Quartz.Impl;
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApP40
{
internal class Program
{
static void Main(string[] args)
{
#region 第一种方式 硬编码方式设置定时任务
//第一种方式 硬编码方式设置定时任务
可以通过配置来设置间隔时间
int a = 10;
//IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
//scheduler.Start();
//var job = JobBuilder.Create<HelloJob>().Build();
可以通过配置来设置间隔时间
var trigger = TriggerBuilder.Create().WithSimpleSchedule(m => m.WithIntervalInSeconds(a).RepeatForever()).StartNow().Build();
//var trigger = TriggerBuilder.Create().WithSimpleSchedule(m => m.WithIntervalInSeconds(1).RepeatForever()).StartNow().Build();
//scheduler.ScheduleJob(job, trigger);
#endregion
#region 第二种方式 job的配置文件配置 Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin 类来处理这个xml文件,同时指定下quartz_jobs.xml的路径,如下所示:使用quartz_jobs.xml 配置文件来创建相关的定时任务需要的参数
//job的配置文件配置 Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin 类来处理这个xml文件,同时指定下quartz_jobs.xml的路径,如下所示:使用quartz_jobs.xml 配置文件来创建相关的定时任务需要的参数
var factory = new StdSchedulerFactory(new System.Collections.Specialized.NameValueCollection()
{
{"quartz.plugin.xml.fileNames","~/quartz_jobs.xml" },
{"quartz.plugin.xml.type","Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin,Quartz"}
});
IScheduler scheduler = factory.GetScheduler();
scheduler.Start();
#endregion
创建调度器
//ISchedulerFactory factory = new StdSchedulerFactory();
//var scheduler = await factory.GetScheduler();
//await scheduler.Start();
创建工作
//var job = JobBuilder.Create<Myjob>().WithIdentity("job1", "group1").Build();
创建触发器,设定触发时间,间隔时间,重复频率
//var trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().WithSimpleSchedule(a => a.WithIntervalInSeconds(5).RepeatForever()).Build();
工作和触发器挂在调度器
//await scheduler.ScheduleJob(job, trigger);
Console.Read();
}
}
public class HelloJob : IJob
{
private string name = string.Empty;
public void Execute(IJobExecutionContext context)
{
Console.WriteLine("Quartz 任务调度执行----当前时间: {0} ", DateTime.Now);
}
}
/// <summary>
/// 工作要处理的内容
/// </summary>
//public class Myjob : IJob
//{
// public virtual Task Execute(IJobExecutionContext context)
// {
// return Console.Out.WriteLineAsync($"job工作了,{DateTime.Now}");
// }
//}
}
使用xml配置job和trigger,首先添加quartz_jobs.xml文件,然后选中visual studio中的xml菜单栏,选中“架构”菜单项,如下:
配置一下 quartz_jobs.xml 复制到输出目录 为 始终复制,生成操作 内容即可
注意: 在quartz_jobs.xml中 <job-type>配置的时候,需要设置应用程序的名称以及IJob的实现类
测试:
修改quartz_jobs.xml中 <repeat-interval>10000</repeat-interval>配置为10,如下
版权声明:本文为LongtengGensSupreme原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。