编写Windows Service 备忘
项目需求要做一个定时扫表,将按条件查询到的数据插入或者更新到另一个数据表的需求,老大要求让用window service来做
因为以前没有做过,把这次的经历写出来.作为备忘.
1.什么是windows服务
以下部分内容来自http://www.cnblogs.com/salomon/archive/2012/05/21/2511643.html
Windows服务,微软的官方定义是这样的:Microsoft Windows 服务(即以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的
可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器上使用,每当
需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。
这种描述过于抽象而且笼统。那么究竟什么是服务呢?首先Windows服务和普通应用一样是是一个应用程序,一个后台进程。但它又十分特殊,特殊在以
下几点:
1.它通常在系统启动时用户登录Windows之前由NET kernel中的SCM(Service Control manager)加载,并一般在系统启动时自动开启的。
2.Windows服务独立于特定用户之上,也就是说它可以被一台计算机上任何用户所共用。
如果一个应用需要长时间的后台运行,并且独立于某个特定用户控制台,我们可以考虑把它写成Windows服务。它通常没有界面(没有硬性限制,可以编
写有界面的Windows服务),通常随机启动,随机关闭而关闭,但也可以随用户需要手动启动,一般两种方法:1 Control Panel -> Administrative Tools
-> Services 2,由其它程序调用SCM提供的接口开启。类似于Windows服务东西比如UNIX的daemons,Dos下的运行于AUTOEXEC.BAT或者 CONFIG.SYS的TSR。常见的服务包括硬件驱动(打印机等),FTP服务,数据库服务,WEB服务等等。
2.编写
2.1 首先创建windows服务项目
如图,我们在创建项目的时候选择windows 服务项目.来进行创建
2.2编写业务逻辑代码
我们也可以将服务类 进行重命名. 这里的OnStart方法在服务启动的时候调用,
所以我们可以将业务逻辑写在这里.建议封装一个类和方法来封装业务逻辑操作,然后在这里调用该类的方法
OnStop方法在服务停止的时候调用,我们在这里可以写一些处理逻辑
3.设置服务名称和登录权限
在 服务的 的设计界面 右键-添加安装程序.会添加一个ProjectInstaller.cs 类.
这里我们需要注意两件事.
A.为设计界面中 serviceInstaller1 控件设置服务的启动类型
Automatic--自动启动
Manual--手动启动
B.设置服务启动登录权限
这里我们选择 以本地系统的权限来启动.
4.安装服务
windows 服务 微软提供了自带的安装程序 InstallUtil.exe
以管理员身份运行该程序,然后安装 你编译好的服务
cmd 会提醒你服务是否安装成功
5.查看服务状态
5.删除服务
我们在调试过程中,可能需要删除服务,然后修改代码.然后重新安装服务,再次调试.
注意,必须先删除服务 否者生成失败.
注意,删除服务之前必须先停止服务.否则删除失败.
建议开两个 CMD不要关闭 一个安装 一个删除,
6.进行服务调试
发开的时候我们要测试业务逻辑和我们预期的是否一致,但是调试服务又很麻烦.
我们可以在Program.cs
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}
在这里调用你的业务类.new 出来直接调用
下面的注释掉.
Main函数也是这个服务启动的入口.
我们将服务安装到本机并且启动之后,也可以以附加到进程的方式调试服务运行
编写Windows Service 备忘的更多相关文章
- C# 编写Windows Service(windows服务程序)
C# 编写Windows Service(windows服务程序) Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.W ...
- 分别在.NET Framework 与 .NET Core 框架下 编写Windows Service(windows服务程序)
前言,为什么会分别在两个框架下编写Windows Service,是因为最近在做区块链这块,使用的是NEO(小蚁区块链)的相关技术,NEO使用的是.net core 2.1,业务上需要写两个程序,一个 ...
- Bonobo Git Server (Simple git server for Windows.) 测试备忘
Bonobo Git Server是一款Windows上的Git Server,它使用IIS即可,走的是Http协议,只要简单的安装就能使用,但是因为我的项目大小有1.35GB在 push 的时候一直 ...
- C# 编写Windows Service(windows服务程序)【转载】
[转]http://www.cnblogs.com/bluestorm/p/3510398.html Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成 ...
- C++ 编写Windows service
最近实现一个windows server端守护进程启动服务功能(c++实现),遇到了一些问题,记录一下 1. 启动Service实现代码: int _tmain(int argc, TCHAR* ar ...
- windows端口备忘
FTP 端口号21 SSH 端口号22 Telnet 端口号23
- windows shell备忘
1.查找占用80端口的进程idnetstat -aon|findstr "80" 2.查找进程id为"1000"的进程名tasklist|findstr &qu ...
- 安装windows系统备忘
1.已写入系统镜像的U盘 2.激活工具(同时激活系统及office) 3.如果没有网口或网线,需要准备万能网卡驱动 4.office 5.360 6.输入法 7.微信 8.谷歌浏览器
- 使用Windows Service Wrapper快速创建一个Windows Service
前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...
随机推荐
- 设置韩澳大利亚sinox弄winxp清除字体和界面美观
澳大利亚开始与汉sinox一直以为接口暗淡,字体比较模糊,否winxp光明,导致眼比较辛苦的眼睛.比方说,可能不那么黯淡刺眼,有益眼睛,但我不能忍受字体模糊.即使调整分辨率,,但是字体模糊还是没有改观 ...
- String.Split()功能
我们在过去的教训 String.Join功能(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx).当中用到了String.SPli ...
- Composer常见问题
Composer常见问题 原文链接:Composer常见问题 安装了Composer后,运行composer --version,查看Composer的版本号.如果出现下面的提示,那么软件安装成功. ...
- 《python源代码分析》笔记 pythonVM一般表达式
本文senlie原版的.转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.字节码指令 LOAD_CONST:从consts表中读取序号为i的元素并压入到执行时栈中 ...
- React实践(一)
该实践取自官方教程:https://github.com/reactjs/react-tutorial 主要是自实现的过程以及一些心得体会 该实践是实现一个评论框. 一个展示所有评论的视图 一个提交评 ...
- 什么时候rootViewController至tabbarController时刻,控制屏幕旋转法
于ios6后,ios系统改变了屏幕旋转的方法,假设您想将屏幕旋转法,在需求rootvc里面制备,例如 UIViewController *viewCtrl = [[UIViewController a ...
- ArcGIS网络分析之Silverlight客户端最近设施点分析(四)
原文:ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 在上一篇中说了如何实现最近路径分析,本篇将讨论如何实现最近设施点分析. 最近设施点分析实际上和路径分析有些相识,实现的过程 ...
- MyEclipse2014 安装SVN小工具
1.下载svn小工具 下载链接:folderID=2240">http://subclipse.tigris.org/servlets/ProjectDocumentList?fold ...
- Python学习笔记16:标准库多线程(threading包裹)
Python主要是通过标准库threading包来实现多线程. 今天,互联网时代,所有的server您将收到大量请求. server要利用多线程的方式的优势来处理这些请求,为了改善网络port读写效率 ...
- 怎样才能充分利用SQL索引
原文:怎样才能充分利用SQL索引 背景:目前WEB的普及太快,很多网站都会因为大流量的数据而发生服务器习惯性死机,一个查询语句只能适用于一定的网络环境.没有优化的查询当遇上大数据量时就不适用了. 本文 ...