1、创建一个定时服务的服务类,执行自己的业务代码
public class TimeJob : IJob //使用IJob接口
{
void IJob.Execute(IJobExecutionContext context)
{
//执行的操作
File.AppendAllText("d:/Quartz.txt", DateTime.Now + "定时任务\r\n");
}
}
2、参加一个任务,并启动
//调度器
IScheduler scheduler;
//调度器工厂
ISchedulerFactory factory;
//创建一个调度器
factory = new StdSchedulerFactory();
scheduler = factory.GetScheduler();
scheduler.GetJobGroupNames();
//-------------计划任务代码实现------------------
//创建任务
IJobDetail job = JobBuilder.Create<TimeJob>().Build();
//创建触发器
ITrigger trigger = TriggerBuilder.Create().WithIdentity("TimeTrigger", "TimeGroup").WithSimpleSchedule(t => t.WithIntervalInSeconds(5).RepeatForever()).Build();
//添加任务及触发器至调度器中
scheduler.ScheduleJob(job, trigger);
//-------------计划任务代码实现------------------
//启动
scheduler.Start();
注1:直接在IIS中执行定时服务,会被IIS的垃圾回收机制给回收掉,所以需要把这个定时服务丢到Windows服务中去执行。
注2:如果短时间内循环执行可能会导致上一次没有执行完成下一次却开始了,为了避免这种问题需要在服务类中添加如下特性
[DisallowConcurrentExecution]
例
[DisallowConcurrentExecution]
public class TimeJob : IJob //使用IJob接口
{
void IJob.Execute(IJobExecutionContext context)
{
//执行的操作
File.AppendAllText("d:/Quartz.txt", DateTime.Now + "定时任务\r\n");
}
}