c# quartz定时任务框架的使用
一、新建windows服务项目,并从nuget引用下图标记的类库:

二、鼠标右键单击Service1.cs,点击查看代码,把类文件修改成如下:
Service1.cs
public partial class Service1 : ServiceBase
{
private IScheduler scheduler;
public Service1()
{
InitializeComponent();
#region Quartz
try
{
//调度器
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
//任务、触发器执行配置
XMLSchedulingDataProcessor processor = new XMLSchedulingDataProcessor(new SimpleTypeLoadHelper());
Stream s = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + @"\Config\quartz_jobs.xml").BaseStream;
processor.ProcessStream(s, null);
processor.ScheduleJobs(scheduler);
}
catch (Exception ex)
{
//log 启动Quartz失败
}
#endregion
}
protected override void OnStart(string[] args)
{
scheduler.Start();
//log 服务启动
}
protected override void OnStop()
{
if (scheduler != null)
{
scheduler.Shutdown(false);
}
//log 服务结束
}
}
三、在windows服务项目下建一个Config文件夹,并添加quartz_jobs.xml配置文件如下:
quartz_jobs.xml
<?xml version="1.0" encoding="utf-8" ?>
<!-- This file contains job definitions in schema version 2.0 format -->
<job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<processing-directives>
<overwrite-existing-data>true</overwrite-existing-data>
</processing-directives>
<schedule>
<!--TestJob Start-->
<job>
<name>TestJob</name>
<group>JobGroup</group>
<description>测试定时任务</description>
<job-type>WindowsService1.Job.TestJob,WindowsService1</job-type>
<durable>true</durable>
<recover>false</recover>
</job>
<trigger>
<!--<simple>
<name>TestTrigger</name>
<group>TriggerGroup</group>
<job-name>TestJob</job-name>
<job-group>JobGroup</job-group>
<misfire-instruction>SmartPolicy</misfire-instruction>
<repeat-count>-1</repeat-count>
<repeat-interval>1000</repeat-interval>
</simple>-->
<cron>
<name>TestTrigger</name>
<group>TriggerGroup</group>
<job-name>TestJob</job-name>
<job-group>JobGroup</job-group>
<start-time>2018-10-12T06:00:00+08:00</start-time>
<cron-expression>0 0/1 * * * ?</cron-expression>
</cron>
</trigger>
<!--TestJob End-->
</schedule>
</job-scheduling-data>
四、在windows服务项目下建一个Job文件夹,并添加TestJob.cs文件如下:
TestJob.cs
[PersistJobDataAfterExecution]//保存执行状态
[DisallowConcurrentExecution]//不允许并发执行
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
//to do...
}
}
五、在windows服务项目下建一个Bat文件夹,并添加如下批处理文件:
install.bat
sc create 服务名称 binPath= "E:\WindowsService1.exe" start= auto sc description 服务名称 "服务描述" pause
start.bat
net start 服务名称 pause
stop.bat
net stop 服务名称 pause
uninstall.bat
sc delete 服务名称 pause

浙公网安备 33010602011771号