Quartz.Net 定时任务框架,可以实现定时任务。一般可以做成Windows--Windows服务,服务可以开机启动。也可以做成控制台应用程序(需要双击运行)。IIS(Web应用)服务器一般用来处理用户请求,做成控制台应用程序减轻IIS服务器的压力。
所需要的DLL文件:Common.Logging.dll Quartz.dll
Program.cs(控制台应用程序):
using Quartz;
using Quartz.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XXX.QuartzNet
{
class Program
{
static void Main(string[] args)
{
IScheduler sched; //计划者,执行任务者。
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
JobDetail job = new JobDetail("job1", "group1", typeof(IndexJob));//工作。job1是工作名,group1是工作所属的组,IndexJob为实现了IJob接口的自定义类。
DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒后开始第一次运行
TimeSpan interval = TimeSpan.FromSeconds(5);//每隔5秒钟执行一次
Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null,
SimpleTrigger.RepeatIndefinitely, interval);//触发器。每若干小时运行一次,小时间隔由appsettings中的IndexIntervalHour参数指定
sched.AddJob(job, true);
sched.ScheduleJob(trigger);
sched.Start();
Console.ReadKey();
}
}
}
IndexJob.cs(自定义的工作类):
using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XXX.QuartzNet
{
/// <summary>
/// 完成工作任务的定义。
/// </summary>
public class IndexJob:IJob //实现IJob接口
{
//触发定时器时,要执行的任务。
IBLL.IKeyWordsRankService bll = new BLL.KeyWordsRankService();
public void Execute(JobExecutionContext context) //IJob工作接口,要执行的任务。
{
bll.DeleteAllKeyWordsRank(); //执行相应的任务(将明细表中的数据插入到汇总表中)。
bll.InsertKeyWordsRank();
}
}
}