WindowsService+Quartz.NET快速搭建
新建一个Windows服务项目

nuget安装Quartz.NET,我这边使用的是2.3.3版本
1. Service改名
2. 添加安装程序,改名
3. ServiceInstaller->属性->StartType改为Automatic
4. ServiceProcessInstaller->属性->Account改为LocalSystem
5. App.config->属性->始终复制(为log4net做准备,可以不设置)
Service->查看代码,修改如下
Service中包含了服务的初始化、启动、终止、暂停、重启等操作
public partial class Service : ServiceBase
{
private IScheduler scheduler; public QuartzService()
{
InitializeComponent();
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
} /// <summary>
/// 启动windows服务
/// </summary>
/// <param name="args">args</param>
protected override void OnStart(string[] args)
{ scheduler.Start(); #region XXXJob string xxx_group_name = "XXXGroup";
string xxx_job_name = "XXXJob";
string xxx_trigger_name = "XXXTrigger";
string xxx_cron = "0/5 * * * * ?"; // 每5秒
IJobDetail xxx_job = JobBuilder.Create<XXXJob>()
.WithIdentity(xxx_job_name, xxx_group_name)
.Build(); ICronTrigger xxx_trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity(xxx_trigger_name, xxx_group_name)
.WithCronSchedule(xxx_cron)
.Build(); scheduler.ScheduleJob(xxx_job, xxx_trigger); #endregion
} /// <summary>
/// 终止windows服务
/// </summary>
protected override void OnStop()
{
scheduler.Shutdown();
} /// <summary>
/// 暂停windows服务
/// </summary>
protected override void OnPause()
{
scheduler.PauseAll();
} /// <summary>
/// 继续windows服务
/// </summary>
protected override void OnContinue()
{
scheduler.ResumeAll();
}
}
创建Jobs文件夹,创建XXXJob类,并集成IJob
public class XXXJob : IJob
{
public void Execute(IJobExecutionContext context)
{
throw new NotImplementedException();
}
}
生成项目,在bin下找到exe,使用管理员模式的cmd创建服务,并启动即完成项目的运行
创建服务
sc create XXXService binpath= C:\XXX\XXXService.exe
删除服务
sc delete XXXService
这些还包括暂停、重启等等,都属于windows操作服务的常规命令
特别注意:
如何调试Windows服务
1. 附加程序
服务启动后,使用附加程序找到对应的exe即可
2. 控制台模式
[项目->属性->输出类型]改为控制台应用程序。
[项目->属性->启动对象]改为对应的Service
正式部署时,记得改回来
WindowsService+Quartz.NET快速搭建的更多相关文章
- 快速搭建一个Quartz定时任务【转载,好文 ,值得收藏,亲身试用 效果不错】
Quartz.NET 入门 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔 ...
- Log4net快速搭建
nuget安装log4net 2018.12.10当前版本为2.0.8 找到所在项目的[Properties->AssemblyInfo] 在底部加上 [assembly: log4net.Co ...
- 快速搭建多线程Windows服务解决方案
一.引言 在软件开发过程中windows服务有的时候非常有用,用于同步数据,发送邮件,宿主WF引擎服务等,但是快速搭建一个好用多线程进行多任务处理的程序往往是一个项目必须考虑的问题.自己在项目中也经常 ...
- Nginx学习笔记--001-Nginx快速搭建
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...
- Github pages + jekyll 博客快速搭建
Github pages + jekyll 博客快速搭建 寻找喜欢的模版 https://github.com/jekyll/jekyll/wiki/sites http://jekyllthemes ...
- NodeJS 最快速搭建一个HttpServer
最快速搭建一个HttpServer 在目录里放一个index.html cd D:\Web\InternalWeb start http-server -i -p 8081
- 利用yeoman快速搭建React+webpack+es6脚手架
自从前后端开始分离之后,前端项目工程化也显得越来越重要了,之前写过一篇搭建基于Angular+Requirejs+Grunt的前端项目教程,有兴趣的可以点这里去看 但是有些项目可以使用这种方式,但有些 ...
- 基于Docker快速搭建多节点Hadoop集群--已验证
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
随机推荐
- jvm部分知识总结
1.jvm有三种执行模式,分别是解释执行,混合执行和编译执行,默认情况是混合执行模式. java version " Java(TM) SE Runtime Environment (bui ...
- codeforces 689A A. Mike and Cellphone(水题)
题目链接: A. Mike and Cellphone time limit per test 1 second memory limit per test 256 megabytes input s ...
- [USACO16JAN]愤怒的奶牛Angry Cows
传送门 一道神奇的DP………(鬼知道他为什么在tarjan里面) 一开始可能会考虑贪心或者什么其他神奇的算法,不过还是DP比较靠谱. 我们用f[i]表示摧毁所有i左侧的炸 药包最少需要的能量,用g[i ...
- bzoj 4668 冷战 —— 并查集按秩合并
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4668 按秩合并维护并查集的树结构,然后暴力找路径上的最大边权即可. 代码如下: #inclu ...
- lua 与 c 的相互调用
Lua是一个嵌入式的语言,意味着Lua不仅可以是一个独立运行的程序包也可以是一个用来嵌入其他应用的程序库. Lua可以作为程序库用来扩展应用的功能,也就是Lua可以作为扩展性语言的原因所在.同时,Lu ...
- Uncaught ReferenceError: is not defined
今天,遍历一个HashSet集合对象,想用链接绑定集合对象的值,通过POST方式提交到控制器.结果程序无反应,按F12键进入调试模式,谷歌总是提示Uncaught ReferenceError: ...
- 10_传智播客iOS视频教程_NSString
从今天开始不会再去用C语言当中的字符串.因为OC当中设计了一种更为好用的存储字符串的变量. C的字符串和OC的字符串是有区别的. NSString类型的指针变量,只能存储OC字符串的地址.第一步是声明 ...
- linux简单技巧和怎么样进入root用户
1.使用shell的Tab键自动补全 Tab在linux命令行输入中可以自动完成.在linux 命令行中使用Tab键会极大提高输入效率2.使用shell的历史记录 shell会记录用户执行命令的历史记 ...
- mongoDB学习资料整理
mongoDB入门篇 http://www.imooc.com/view/246
- UIBC 小註解(转载)
转自:http://www.cash.idv.tw/wordpress/?p=7942 UIBC 是指 User Input Back Channel, 用在 WIFI Display 的情境之下. ...