<1>
Quartz.NET-1.0.3文件下载地址 (这是老版本了,现在已经有新版本了。用法好像不一样了)
首先要添加Quartz.NET-1.0.3 文件下面的 bin/3.5/Release/Quartz/ 目录下面的Common.Logging.dll文件和Quartz.dll文件 然后添加引用。将连个文件引入到项目中来
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 测试定时任务
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
/*
QUARTZ.NET 是一个定时任务框架 概念: 计划者:IScheduler; 工作 IJob; 触发器:Trigger;
我们先得到一个计划者(IScheduler) 然后创建一个任务工作(IJob),把这个任务扔给计划者,并且告诉它在什么条件下(触发器Trigger)做这件事
将要定时执行的任务的代码写到IJob接口的Execute方法中即可,时间到来的时候Execute方法会被调用
CrondTrigger是通过Crond表达式设置的触发器,还有SimpleTrigger等简单的触发器,可以通过TriggerUtils的MakeDailyTrigger(每天执行一次),MakeHourlyTrigger(每小时执行一次) 等方法简化调用。
*/
IScheduler sched;
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler(); //这是一个计划者
JobDetail job = new JobDetail("job1", "group1", typeof(TestJob));//TestJob为实现了IJob接口的类 ,需要我们自己定义的,那么我们就在项目下添加一个TestJob类。并让它去实现Ijob接口。
DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒后开始第一次运行
//TimeSpan interval = TimeSpan.FromHours(1);//每隔1小时执行一次
//TimeSpan interval = TimeSpan.FromSeconds(5); //每隔5秒钟执行一次
//Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null,
//SimpleTrigger.RepeatIndefinitely, interval);//每若干小时运行一次,小时间隔由appsettings中的IndexIntervalHour参数指定
Trigger trigger = TriggerUtils.MakeDailyTrigger("tigger1", 0, 37); //(每天执行)让它在9点46的时候执行
//Trigger trigger = TriggerUtils.MakeHourlyTrigger("tigger1",1,2);//(每小时执行)让它每间隔一小时执行两次次
//Trigger trigger = TriggerUtils.MakeImmediateTrigger("tigger1",2,TimeSpan.FromSeconds(5));//(立即执行)5秒钟执行一次,总共执行2次。也就是说在10秒钟内执行了2次。执行完这两次后就不再执行了。
//Trigger trigger = TriggerUtils.MakeMonthlyTrigger("tigger1",12,13,5);//(每月执行)在5月12日13点执行
//等等,还有很多方法。
trigger.JobName = "job1";
trigger.JobGroup = "group1";
trigger.Group = "group1";
sched.AddJob(job, true);
sched.ScheduleJob(trigger);
sched.Start();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
sched.Shutdown(true);
}
}
}
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 测试定时任务
{
class TestJob : IJob //在这里我们让TestJob类继承IJob接口,并实现这个接口。我们看到其实这个接口里只有一个Execute方法。
{
public void Execute(JobExecutionContext context)
{
//throw new NotImplementedException();
MessageBox.Show("任务执行啦!"); //我们就在这个方法里弹出一个“任务执行啦!”的窗口吧。
}
}
}