<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("任务执行啦!"); //我们就在这个方法里弹出一个“任务执行啦!”的窗口吧。 } } }