使用Quartz.NET创建window定时服务(二)

今天就开始介绍怎么使用Quartz.NET来创建基于时间的定时服务,Quartz.NET我们不仅可以用在服务里、控制台、web、窗体、wpf等都是可以的。在本项目中就放在服务里。

第一步:我们在vs的NuGet里获取Quartz.NET,这里采用的是2.62版本,目前是最高版本是3.0.5。之所以不用最高版本,是因为自2.6.2版本以后,使用方式就改变了,我们暂时使用2.6.2

2.这里有一个坑,有些时候,版本信息默认是在下面的,如图左,我们这时候,把Quartz放在第一个,如右图

3.建立一个IndexJob类,此类必须实现IJob接口,我们定时做的工作,写在方法Execute里,代码如下

public class IndexJob : IJob//必须实现这个接口
{
//实现接口里面的这个方法,也就是写具体做的事,将明细表的数据插入到汇总表中(可以是一周内搜索的热词)

// 这里写的是本服务做得事
public void Execute(IJobExecutionContext context)
{
try
{
LogHelper.WriteLog(DateTime.Now.ToString() + "IndexJob=>context:开始执行定时服务");

LogHelper.WriteLog(DateTime.Now.ToString()+"定时服务结束了");

}
catch (Exception ex)
{
LogHelper.WriteLog(DateTime.Now.ToString() + "IndexJob=>context Exception:"+ex.Message);
throw;
}
}
}

4.接下来我们需要创建一个类StartService 这个类配置我们的任务和组。job使我们实例化的工作,刚才建的类IndexJob,注册到里面,并起个名字job1,triggrt使我们设置什么时候去触发,这里是每天的9:31:01执行,关于时间我们可以任意配置

以下是配置的规则,我们的需求模拟配就可以,(这几个规则数据,来源于网络)这是我平常的收集规则

"30 * * * * ?" 每半分钟触发任务

"30 10 * * * ?" 每小时的10分30秒触发任务

"30 10 1 * * ?" 每天1点10分30秒触发任务

"30 10 1 20 * ?" 每月20号1点10分30秒触发任务

"30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务

"30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务

"30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务

"30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务

"15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务

"15-45 * * * * ?" 15到45秒内,每秒都触发任务

"15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次

"15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次

"0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次

"0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务

"0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务

"0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务

"0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务

public class StartService
{
/// <summary>
/// 开启定时服务
/// </summary>
public static void Start()
{
LogHelper.WriteLog(DateTime.Now.ToString() + "StartService=》Start:开始配置服务");
ISchedulerFactory sf = new StdSchedulerFactory();
IScheduler scheduler = sf.GetScheduler(); //创建调度实例
//创建任务实例
IJobDetail job = JobBuilder.Create<IndexJob>().WithIdentity(new JobKey("job1")).Build();
//创建触发器实例
ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds(0)).WithCronSchedule("01 31 9 * * ? ").Build();
LogHelper.WriteLog(DateTime.Now.ToString() + "StartService=》Start:开始绑定定时任务");
// 如果需要多个的话,只需要绑定多个即可
scheduler.ScheduleJob(job, trigger); //绑定触发器和任务

scheduler.Start(); //启动监控
LogHelper.WriteLog(DateTime.Now.ToString() + "StartService=》Start:开始监控定时任务");

}
}

如果我们有多个任务 只需要再建立一个job和trigger即可,然后同上加入这两行代码就行

scheduler.ScheduleJob(job, trigger); //绑定触发器和任务

scheduler.Start(); //启

当然,时间我们可以写在配置文件里,以后修改方便,

5我们最后在服务里调用即可

.

也可以在控制台等其他项目调用,这样一个定时服务,也就搭建完毕了。

原文地址:https://www.cnblogs.com/zhihuama/p/9152957.html

时间: 2024-10-14 00:47:08

使用Quartz.NET创建window定时服务(二)的相关文章

LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目

LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开发.简单明了完成一个服务,不再繁琐的进行各种代码耦合度强的操作,设计了一个以暂时以quartz.net 为服务载体,插件化开发的模式. github地址:https://github.com/linbin524/LBPL 由于工作比较忙,暂时更新部分,后续会将相关的开发文档更新. 主要开发流程 1.

WCF服务二:创建一个简单的WCF服务程序

在本例中,我们将实现一个简单的计算服务,提供基本的加.减.乘.除运算,通过客户端和服务端运行在同一台机器上的不同进程实现. 一.新建WCF服务 1.新建一个空白解决方案,解决方案名称为"WCFSolution". 2.解决方案右键->添加->类库项目,类库名称为CalculateWcfService. 3.创建服务契约 WCF采用基于契约的交互方式实现了服务的自制.服务契约:是相关操作的集合.契约就是双方或多方就某个关注点达成的一种共识,是一方向另一方的一种承诺.签署了某个

Sharepoint2013搜索学习笔记之创建搜索服务(二)

第一步,进入管理中心,点击管理服务器上的服务 第二步,在服务器上选择需要承载搜索服务的服务器,并启动服务列表上的sharepoint server search 第三步,从管理中心进入管理服务应用程序 第四步,新建search service application 第五步,在弹出的新建窗口分别填好相应信息点击确定,主要注意的是 应用程序池可以选择已经有的,也可以自己填一个新的名称,选择填写新的之后,程序会在稍后新建一个应用程序池,一般推荐新建应用程序池. 默认情况,爬网组件会用配置好的搜索服务

接Window服务(二)

接Window服务(一) ServiceController方法调用 1 public partial class Service1 : ServiceBase 2 { 3 public Service1() 4 { 5 InitializeComponent(); 6 this.AutoLog = true; 7 } 8 protected override void OnStart(string[] args) 9 { 10 // TODO: 在此处添加代码以启动服务. 11 string

Windows服务二:测试新建的服务、调试Windows服务

一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main()函数中完成这个操作.首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法.然而调用Run()方法并不意味着就开始了Windows服务程序,必须要等到该对象的OnSta

为MongoDB创建一个Windows服务

一:选型,根据机器的操作系统类型来选择合适的版本,使用下面的命令行查询机器的操作系统版本 wmic os get osarchitecture 二:下载并安装 附上下载链接 点击安装包,我这里是把文件安装到了(E:\MongoDB) 安装好之后该文件夹下就出现下面的文件, 这个时候新建一个Data文件夹用来存放MongoDB的所有数据,新建一个Log文件夹用来存放日志文件 三:启动MongoDB数据库,在命令行窗口执行下面的命令,执行完成之后会看到下面的提示信息 e:\mongodb\bin\m

标准app基础模板建立-活动管理-定时服务-键值对存储-日志工具

一.建立工程 1.建立一个空白的工程,名称为ModelApp. 2.在main-java下新建package,起名com.jiaweiqiang.tools,用于放置通用工具类. 二.建立得到全局变量的Application类 1.在tools中新建MyApplication类,用于存储全局context和其他程序需要的通用变量. public class MyApplication extends Application { private static Context context; pr

DotNetCore 定时服务 HangFire

# DotNetCore 定时服务 HangFire 最近在写一个Asp.net core 的项目,其中有用到定时任务,一开始准备要用Quartz.net.毕竟在Java中和.net framework中都表现突出. 但是看了一下Quartz.net 关于Asp.net core 的文档之后决定换一个定时任务框架,于是我选择了HangFire. 开发工具:visual studio code 环境:.net core 2.0 ①创建一个asp.net core mvc项目:在vs code打开一

Topshelf + Quartz2.5 创建基于windows服务

1.创建一个定时调度Quartz类 1 using Quartz; 2 using Quartz.Impl; 3 using System; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 using Topshelf; 9 10 11 namespace TopShelfSolution 12 { 13 14 publi