编写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是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...
随机推荐
- WSHPSRS-匹克选择列表生成器-SRS(R12.2.3)
匹克选择列表生成器-SRS(R12.2.3) --US Program:Pick Selection List Generation - SRS Short Name:WSHPSRS Appli ...
- MVC中使用泛型仓储模式和依赖注入
在ASP.NET MVC中使用泛型仓储模式和依赖注入,实现增删查改 原文链接:http://www.codeproject.com/Articles/838097/CRUD-Operations-Us ...
- WinForm实现类似QQ停靠,显示隐藏过程添加特效效果
原文:WinForm实现类似QQ停靠,显示隐藏过程添加特效效果 这可能是个老题长谈的问题了,只是在项目中会用到这个效果,所以今天做个记录.大家见了别喷我.在项目中的需求是这样的. 打开程序,在屏幕的右 ...
- MP4文件格式具体解释——结构概述
MP4文件格式具体解释(ISO-14496-12/14) Author:Pirate Leo Email:codeevoship@gmail.com 一.基本概念 1. 文件,由很多Box和FullB ...
- ural 1932 The Secret of Identifier 容斥
主题链接:点击打开链接 stl+容斥 #include <cstdio> #include <cstring> #include <algorithm> #incl ...
- HTML5 画一张图
笔者:本笃庆军 原文地址:http://blog.csdn.net/qingdujun/article/details/33344289 一.绘制图像 使用drawImage()方法绘制图像. 画图环 ...
- 高性能网络server--I/O复 select poll epoll_wait之间的差
一个.select 方式作为收集,最多只能监控1024描述叙事断裂的文件,内部使用位操作,相应的位置1或设置0,必须是可读.可写.三类除单独的事件,内部查询方法.将全部的套接字从内核到用户空间之间进行 ...
- Asp.Net+Easyui实现重大CRUD
今天周四称,这应该给自己一个休息,好好休息休息,但无奈自己IT这是痴迷.甘心的想加加班把目标功能实现,功夫不负有心人.经过6个小时的鏖战,我最终成功了. 在此和大家分享下成果,希望大家给个赞. 我的目 ...
- 开始 space viking 之旅
设备 cocos2d-v2 眼下cocos2d-v3也不太稳定,它在很大程度上仍然是变化的功能. 对于稳定.我们仍然使用 v2 wget -c http://cocos2d-iphone.goo ...
- Android中利用Handler实现消息的分发机制(三)
在第二篇文章<Android中利用Handler实现消息的分发机制(一)>中,我们讲到主线程的Looper是Android系统在启动App的时候,已经帮我们创建好了,而假设在子线程中须要去 ...