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 服务一样随系统启动,并且隐藏你的控制台界面.下面介 ...
随机推荐
- 《Linux就该这么学》第七天课程
昨天晚上我找了刘老师决定了报考红帽RHCSA,RHCE认证,我不指望这个认证能给我带来工作上的某些福利,毕竟出去闯靠的是实力外加运气 我只是希望通过这个认证来激励自己! 下面是分享的一些干货! 原创地 ...
- Linux 第七天
软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l 开源,如果有足够的能力,可以修改源代码 l 可以自由选择所需的功能 l 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...
- Win7 VS2015 x64 MASM汇编语言编写DLL文件
有点坑记录一下. 首先创建工程时选控制台类型工程,Win32估计就应该选Win32的,反正我测试用的控制台. 然后选DLL类型,除了Empty其他全都去掉. 工程属性,masm勾上. Linker & ...
- Beta冲刺 (4/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 共享编辑文章的后端数据处理 展示Gi ...
- OpenCV从2到3的过渡
与版本2.4相比,OpenCV 3.0引入了许多新算法和功能.有些模块已被重写,有些已经重组.尽管2.4中的大多数算法仍然存在,但接口可能不同.本节描述了一般性的最显着变化,过渡操作的所有细节和示例都 ...
- oracle-查询-时间条件查询
select * from 表名 where date =to_date('时间','yyyy-dd-mm');
- Beta阶段冲刺集合贴
第零篇准备博客:https://www.cnblogs.com/coolgirls/p/9066239.html 第一篇冲刺博客:https://www.cnblogs.com/coolgirls/p ...
- CentOS 7安装新版RabbitMQ解决Erlang 19.3版本依赖
通过yum等软件仓库都可以直接安装RabbitMQ,但版本一般都较为保守. RabbitMQ官网提供了新版的rpm包(http://www.rabbitmq.com/download.html),但是 ...
- Python脱产8期 Day014 2019/4/28
一 带参装饰器 1.通常,装饰器为被装饰的函数添加新功能,需要外界的参数 # -- outer参数固定一个,就是func # -- inner参数固定同被装饰的函数,也不能添加新参数 # -- 可以借 ...
- JavaScript对象编程-第3章
目录 Date对象 Math对象 数组对象 字符串对象 正则表达式对象 什么是对象 对象拥有属性和方法,属性各种数据类型,方法对属性中的数据进行操作. JavaScript的对象 内置对象 Date. ...