C# QuartZ使用实例写成服务
官方学习文档:http://www.quartz-scheduler.net/documentation/index.html
官方的源代码下载:http://sourceforge.net/projects/quartznet/files/quartznet/
nuget安装包地址: https://www.nuget.org/packages/Quartz/
不会写cron可以自动生成 http://cron.qqe2.com/
在程序包管理器控制台 输入Install-Package Quartz -Version 3.0.6
倒包

下面是调度的实例部分
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Quartz; using Quartz.Impl; namespace ConsoleApp3 { public class Scheduler { private static IScheduler scheduler; public static IScheduler Current { get { if (scheduler==null) { scheduler = StdSchedulerFactory.GetDefaultScheduler().Result; } return scheduler; } } /// <summary> /// 启动程序 /// </summary> public void Start() { Current.Start(); task(); } /// <summary> /// 停止程序 /// </summary> public void Stop() { Current.Shutdown(); } /// <summary> /// 重启程序 /// </summary> public void Restart() { Current.Shutdown(); scheduler = null; Current.Start(); } /// <summary> /// 任务 /// </summary> public void task() { Job<ORders>("order", "0/1 * * * * ? ");//corn规则 } /// <summary> /// 初始化任务 /// </summary> public void Job<T>(string uid, string cronExpression)where T : IJob { //初始化创建作业 var jobuilder = JobBuilder.Create<T>();//约束类型为 Ijob //根据ID 标识触发器 构建调度 var job= jobuilder.WithIdentity(uid, uid).Build(); var cron = (ICronTrigger)TriggerBuilder.Create() //初始化触发器 .WithIdentity("trigger" + uid, "group" + uid)//标识触发器 .StartNow()//触发第一次运行 .WithCronSchedule(cronExpression)//触发规则 .Build();//构建调度 //将创建的类线程和规则关联 Current.ScheduleJob(job, cron); } } }
要每秒执行的调度方法 Execute 去实现
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Quartz; namespace ConsoleApp3 { public class ORders : IJob { public Task Execute(IJobExecutionContext context) { Task task = null; Console.WriteLine("wewr"); return task; } } }
接着使用Topshelf 创建Windows 服务
官网 http://topshelf-project.com/
git http://github.com/topshelf/Topshelf/downloads
在 nuget 搜索 Topshelf 包
在包管理工具中安装 输入Install-Package Topshelf -Version 4.0.4.161-develop
也可以 加日志 Install-Package Topshelf.Log4Net
官网给的例子 http://docs.topshelf-project.com/en/latest/configuration/quickstart.html
通过下面的实例安装服务
using System; using Topshelf; namespace ConsoleApp3 { class Program { static void Main(string[] args) { try { HostFactory.Run(x => { x.Service<give>(s => { s.ConstructUsing(name => new give()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.RunAsLocalSystem(); x.SetDescription("测试服务");//服务描述 x.SetDisplayName("Test.y");//显示服务名 x.SetServiceName("Test.y");//服务名称 }); } catch (Exception ex) { Console.WriteLine(string.Format("服务启动失败,原因:{0}", ex.ToString())); } new Scheduler().Start(); Console.ReadKey(); } } /// <summary> /// 服务要跑的内容 /// </summary> class give { public void Start() { try { new Scheduler().Start();//调度启动方法 } catch (Exception ex) { Console.WriteLine(ex); } Console.WriteLine("执行Start方法,启动成功"); } public void Stop() { } } }
下面我们制作安装服务bat 文件
@echo off rem 安装Windows服务 E:\Service\bin\Release\ConsoleApp3.exe install rem 启动服务 E:\Service\bin\Release\ConsoleApp3.exe start @echo on pause
卸载服务
@echo off rem 卸载Windows服务
E:\Service\bin\Release\ConsoleApp3.exe
uninstall @echo on pause
未完待续。。。
C# QuartZ使用实例写成服务的更多相关文章
- MongoDB 多实例安装成服务
转发自:https://www.cnblogs.com/GainLoss/p/6906937.html 1.在mongodb的官网上下载安装包 https://www.mongodb.com/down ...
- WCF 项目应用连载[3] - 双向通信 实例管理与服务端监控
WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 第二节我们已经创建了Lig项目,并且能稳定工作了.现在我们来改进ILigAgent接口,实现WCF的双向通 ...
- 实例PK(Vue服务端渲染 VS Vue浏览器端渲染)
Vue 2.0 开始支持服务端渲染的功能,所以本文章也是基于vue 2.0以上版本.网上对于服务端渲染的资料还是比较少,最经典的莫过于Vue作者尤雨溪大神的 vue-hacker-news.本人在公司 ...
- windows下安装Redis并部署成服务
windows下安装Redis并部署成服务 Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 一:下载 下载地址: windows版本: http ...
- 不用写Windows服务实现定时器功能(FluentScheduler )
MacBook Pro 只有四个 USB Type-C 接口是否错了? 一项新技术的诞生总会对已存在的事物造成冲击或影响,如果大家都害怕冲击与影响,那这个世界永远像现在不变就行了,大家都好好的,待在自 ...
- MongoDB的安装和配置成服务的三种方法和一些难点
1. Hotfix KB2731284 or later update is not installed的问题: If you are running any edition of Windows S ...
- PHPCMS v9构建模块 - 实例之企业服务模块
下面开始第一个实例,企业服务模块,这是个比较简单的模块,做一个抛砖的作用. 模块功能分析:企业服务,企业填写招聘申请表,管理审核之后,展示作为招聘通知的功能. ■1.文件分布 modules文 ...
- 刺猬大作战(游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4)
游戏特性[编辑] 游戏引擎用Free Pascal写成,GUI用C++写成,使用SDL和Qt4[2]. 0.9.12开始支持实时动态缩放游戏画面. 个性化[编辑] 刺猬大作战有着高度定制性 游戏模式: ...
- Windows 程序注册成服务的方法
Windows 程序注册成服务的方法 将windows 程序注册成服务这个是很多后台程序需要实现的功能,注册成服务后,你的程序就可以像windows 服务一样随系统启动,并且隐藏你的控制台界面.下面介 ...
随机推荐
- c++两个类相互调用
有可能会碰到两个类之间的相互调用的问题,例如:定义了类A和类B,A中使用了B定义的类型,B中也使用了A定义的类型 class A { B b; }; class B { A a; }; 编译器在声明A ...
- 统计C/C++代码行数
近日在写一个统计项目中C/C++文件(后缀名:C/CPP/CC/H/HPP文件)代码行数的小程序.给定包含C/C++代码的目录,统计目录里所有C/C++文件的总代码行数.有效代码行数.注释行数.空白行 ...
- Hadoop 综合揭秘——HBase的原理与应用
前言 现今互联网科技发展日新月异,大数据.云计算.人工智能等技术已经成为前瞻性产品,海量数据和超高并发让传统的 Web2.0 网站有点力不从心,暴露了很多难以克服的问题.为此,Google.Amazo ...
- Unity全面的面试题(包含答案)
一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行,协程很像多线程,但是不是多线程,Unity的协程实在每帧结束之后去检测yield的条件是否满足. 二:Unity3D中 ...
- HTCVive使用
1.设备的安装与配置 https://wenku.baidu.com/view/fa172fd7482fb4daa48d4b44.html?from=search 2.接入SDK.实现简单示例场景.更 ...
- SpringBoot swagger-ui.html 配置类继承 WebMvcConfigurationSupport 类后 请求404
1 .SpringBoot启动类加上 注解 @EnableWebMvc @SpringBootApplication@EnableWebMvc public class Application { ...
- 第二十三节:Java语言基础-详细讲解函数与数组
函数 函数在Java中称为方法,在其他语言中可能称为函数,函数,方法就是定义在类中具有特定功能的程序.函数,在Java中可称为方法. 函数的格式: 修饰符 返回值类型 函数名(参数类型 参数1, 参数 ...
- 你可能不知道的BFC在实际中的应用
概述 BFC是块级格式化上下文,它的一个令人熟知的运用是双飞翼布局或者两列布局.但其实它在其它地方也有很巧妙的运用.我把研究的心得记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: mdn块 ...
- tar与压缩详解
.gz gzip gunzip(gzip -d) .zip .rar .bz2 gzip压缩文件不保留原文件 , 不能压缩目录 gzip filename.x 用gzip压缩文件 gun ...
- WIN10下Prolific USB-to-Serial Comm Port驱动
最近在安装Prlific的时候,通过电脑自动安装启动后,发现系统无法识别,如下图所示: 还以为是驱动比较老,没有及时更新导致的,去官网下载最新的驱动,发现了这个列表: 这个驱动不支持win10. 后来 ...