1.要执行的作业
using System.Collections.Generic;
using System.Linq;using System.Text;
using System.Threading.Tasks;
using Quartz;
using System.Data.SqlClient;
namespace Schedule
{
public class JobDemo:IJob
{
public int count = 0;
public void Execute(IJobExecutionContext context)
{
SqlConnection connet = new SqlConnection();
connet.ConnectionString = "server=.;database=mydatabase;uid=sa;pwd=yezhu@2017";
connet.Open();
SqlCommand com = new SqlCommand();
com.Connection = connet;
com.CommandText = "Select * from infos";
SqlDataReader dr = com.ExecuteReader();
dr.Close();
connet.Close();
++count;
Console.WriteLine(count);
Console.WriteLine(DateTime.Now.ToString("r"));
}
}
}
2.作业参数配置
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Quartz;
using Common.Logging;
using log4net;
using Quartz.Impl;
using Topshelf;
namespace Schedule
{
class Program
{
static void Main(string[] args)
{
//Console.WriteLine(DateTime.Now.ToString("r"));
//创建一个作业调度池
ISchedulerFactory schedf = new StdSchedulerFactory();
IScheduler sched = schedf.GetScheduler();
//创建一个具体的作业
IJobDetail job = JobBuilder.Create<JobDemo>().Build();
//DateTimeOffset starttime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 1);
//DateTimeOffset endtime = DateBuilder.NextGivenSecondDate(DateTime.Now.AddSeconds(1), 59);
DateTimeOffset starttime =DateTime.Now.AddMinutes(1);
DateTimeOffset endtime = DateTime.Now.AddMinutes(2);
//创建一个触发器
ISimpleTrigger trigger =
(ISimpleTrigger)TriggerBuilder.Create()
.StartAt(starttime)
.EndAt(endtime)
.WithSimpleSchedule(x => x.WithIntervalInSeconds(1).WithRepeatCount(4)).Build();
//ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create().StartAt(starttime).EndAt(endtime)
// .WithCronSchedule("1,10,14 10,20,25,26,33,54 * * * ? ")
// .Build();
//加入作业调度池
sched.ScheduleJob(job, trigger);
//开始运行
sched.Start();
//挂起2天
//Thread.Sleep(TimeSpan.FromSeconds(2));
//2天后关闭作业调度,将不在执行
//sched.Start();
//sched.Shutdown();
Console.ReadKey();
}
}
}