Windows服务 + Quartz.NET
服务基础
安装
管理员打开cmd
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
InstallUtil.exe Path_WinSvc.exe
或者 将 InstallUtil.exe 直接拷贝到生成目录,运行 InstallUtil WinSvcName.exe
基础
原生实现
- ServiceBase
- ServiceInstaller
问题梳理
在初始化安装时发生异常:System.BadImageFormatException:
未能加载文件或程序集“file:///F:\IT\C#\WinSvc\TestWinSvc\Release\WinSvcSqh.exe”或它的某一个依赖项。
试图加载格式不正确的程序。
解决:注意生成-目标平台(x64 or x86)以及应用程序-目标框架
在“安装”阶段发生异常:“System.Security.SecurityException:未找到源,但未能搜索某些或全部事件日志。
不可访问的日志: Security。”
解决:不通过cmd窗口,改用.bat文件,右键以管理员身份运行。
安装服务Install.bat如下,仅供参考:
%复制安装文件至当前目录%
copy C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe %~dp0
%切换到当前bat文件所在目录%
cd /d %~dp0
%执行安装命令%
installutil WinSvcSqh.exe
@pause;
最后,在 我的电脑-右键属性-服务 中即可看到新增的windows服务。
- 启动服务:直接右键-Start,或者 管理员身份运行cmd执行 net start WinSvcSqh
- 停止服务:右键-Stop,或者 管理员身份运行cmd执行 net stop WinSvcSqh
看下代码,基本windows服务如下
partial class WinSvcSqh : ServiceBase
{
public WinSvcSqh() {
InitializeComponent();
} protected override void OnStart(string[] args) {
// do something
} protected override void OnStop() {
// do something
}
}
主程序启动代码如下
/// 应用程序的主入口点。
public static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {
new WinSvcSqh()
};
ServiceBase.Run(ServicesToRun);
}
基础教程参见: https://www.cnblogs.com/cncc/p/7170951.html
Castle
- IOC框架
- 定时任务、日志服务
具体参见:.Net IOC框架 | sqh
扩展
目标:TopShelf+Quartz.net实现基于window服务的定时任务调度
Topshelf
官网 | Topshelf,开源,跨平台的宿主服务框架(Windows服务开发框架),便捷创建 windows服务。
- 允许使用控制台程序开发windows服务,方便调试
- 支持多实例的部署
- 集成log4net
结合 Quartz,实现任务调度服务。
Quartz .Net
官网 | Quartz,开源,企业级定时计划任务调度框架,支持 .NET Core。
初步学习:Quartz .net开源job调度框架,相关参见Github上的demo示例:JobScheduleDemoCode
Windows服务 + Quartz.NET的更多相关文章
- Quartz.NET Windows 服务示例
想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...
- Quartz.Net在windows服务中的使用
写在前面 这几天在弄一个项目,需要定时抓取一些数据,当时也想直接用timer算了.因为之前也弄过这样的项目,但是一想,已经用过了,再去使用同一种思路,未免太乏味了.就换了一种新玩法.这里将之前看到的一 ...
- Windows服务调用Quartz.net 实现消息调度
Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...
- 使用普通Windows服务创建Quartz.Net服务项目
Quartz.NET 项目地址 http://quartznet.sourceforge.net/ 源码下载地址:Quartz.Net.2.0 首先创建Quartz.Net.2.0解决方案,添加 Wi ...
- 子线程导致 Windows 服务停止的情况(Topshelf 结合 Quartz.NET)
Ø 前言 本文主要记录子线程导致 Topshelf 和 Quartz.NET 的 Windows 服务停止的现象,以及使用几种常用子线程的注意事项.因为我们有时可能需要开启多个线程执行复杂的逻辑,如 ...
- 使用 Topshelf 结合 Quartz.NET 创建 Windows 服务
Ø 前言 之前一篇文章已经介绍了,如何使用 Topshelf 创建 Windows 服务.当时提到还缺少一个任务调度框架,就是 Quartz.NET.而本文就展开对 Quartz.NET 的研究,以 ...
- windows 服务实现定时任务调度(Quartz.Net)
我们通常在一些情况下需要软件具有一个自动执行某些任务的功能,但是又不希望直接启动软件,或者每次都要手动的来启动软件,这时我们可可以考虑到windows服务了. 首先创建一个windows服务项目(详细 ...
- Quartz+TopShelf实现Windows服务作业调度
Quartz:首先我贴出来了两段代码(下方),可以看出,首先会根据配置文件(quartz.config),包装出一个Quartz.Core.QuartzScheduler instance,这是一个调 ...
- Quartz.NET+Topshelf 创建Windows服务
由于项目开发中经常会有定时任务执行的需求,所以会第一时间就想到 windows 服务 的方式,但是做过开发的同学都知道windows服务不利于调试,安装也麻烦: 并且有开源的作业框架Quartz.NE ...
随机推荐
- Django文档
https://docs.djangoproject.com/zh-hans/2.1/
- WCAG
WCAG What is WCAG? Web Content Accessibility Guidelines (WCAG) Overview Checklist and solve technolo ...
- iOS面试考察点
)自我介绍.项目经历.专业知识.自由提问 (2)准备简历.投发简历.笔试(电话面试.).面试.复试.终面试.试用.转正.发展.跳槽(加薪升职) 1闲聊 a)自我介绍:自我认识能力 b)评价上一家公司: ...
- sqlserver 数据库操作导出数据sql工具
软件名称sqldbx 下载URL https://download.csdn.net/download/yanghl1998/7832861 Navicat Premium 这个工具任何类型数据库 ...
- 【MM系列】在SAP里查看数据的方法
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法 前言部 ...
- 用 Unity 实现调色板功能
用unity 实现调色板功能. 直接上代码: using UnityEngine; using System.Collections; using UnityEngine.UI; public cla ...
- Hanoi II——汉诺塔步数求解进阶问题
在NOJ上遇到关于汉诺塔步数的求解问题 开始读时一脸懵逼,甚至不知道输入的数据是什么意思 题目描述:给出汉诺塔的两个状态,从初始状态移动到目的状态所需要的最少步数 对于初级汉诺塔步数问题,我们可以直接 ...
- Vue.js—60分钟快速入门
本文摘自:http://www.cnblogs.com/keepfool/p/5619070.html Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的 ...
- spring 中常用的两种事务配置方式
引用:http://blog.csdn.net/qh_java/article/details/51811533 引用:http://www.cnblogs.com/rushoooooo/archiv ...
- windwos提权-CVE-2019-1388
windwos提权-CVE-2019-1388 guest→system(UAC手动提权) 利用高权限建立一个低权限账户orange 查看权限 win-vomjm1p7c71\orange 下载HHU ...