window 服务(一)
windows服务应用程序是一种长期运行在操作系统后台的程序,它对于服务器环境特别适合,它没有用户界面,不会产生任何可视输出,任何用户输出都回被写进windows事件日志。计算机启动时,服务会自动开始运行,他们不要用户一定登陆才运行。
可以通过选择菜单“开始”-〉“控制面板”-〉“管理工具”-〉“服务”来查看现有系统中的服务,如下图:

创建window 服务
新建一个window 服务项目MyService,如下图

从工具箱的组件表中拖动一个Timer对象到这个视图设计器上面。
设置Timer属性,Enable为true,Interval属性为3000毫秒

双击Timer事件,添加事件

1 public partial class Service1 : ServiceBase
2 {
3 public Service1()
4 {
5 InitializeComponent();
6 }
7
8 protected override void OnStart(string[] args)
9 {
10 // TODO: 在此处添加代码以启动服务。
11 }
12
13 protected override void OnStop()
14 {
15 // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
16 }
17
18 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
19 {
20
21 }
22 }


1 public partial class Service1 : ServiceBase
2 {
3 public Service1()
4 {
5 InitializeComponent();
6 }
7 protected override void OnStart(string[] args)
8 {
9 // TODO: 在此处添加代码以启动服务。
10 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "启动";
11 WriteLog(state);
12 }
13 protected override void OnStop()
14 {
15 // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
16 string state = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "停止";
17 WriteLog(state);
18 }
19 private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
20 {
21 WriteLog(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
22 }
23 public void WriteLog(string str)
24 {
25 using (StreamWriter sw = File.AppendText(@"c:\service.txt"))
26 {
27 sw.WriteLine(str);
28 sw.Flush();
29 }
30 }
31 }

其中OnStart和OnStop分别是服务器启动和停止后,所发生的事件操作方法,WriteLog是操作方法;
将服务程序service1.cs 切换到视图模式,用鼠标右键单击设计视图选择“添加安装程序”选项,此后在项目中自动增加了一个ProjectInstaller.cs,如下图

设置serviceInstaller1组件属性,
ServiceName=MyServiceLog安装服务器名字;
StartType=Automatic 开机自动启动
设计serviceProcessInstaller1的属性Account=LocalSystem;
运行编译,一个简单的windows服务已经开发完成
注:如果在代码中的文件路径写成如下“service.txt”,那么此时文件保存在C:\WINDOWS\system32文件夹中。
安装window服务
安装命令:InstallUtil.exe MyServiceLog.exe
InstallUtil存在路径为:C:\WINDOWS\Microsoft.NET\Framework\.NET版本号
复制C:\WINDOWS\Microsoft.NET\Framework\版本号 路径中的InstallUtil.exe 到bin/debug或bin/release文件夹中,在命令行窗口中直接运行命令
InstallUtil.exe MyServiceLog.exe,在系统中注册这个服务,使它建立一个合适的注册项,如下图:

然后再window服务列表中,启动MyServiceLog服务
卸载window 服务
命令:InstallUtil.exe MyServiceLog.exe /u
如果修改这个服务,但是路径没有变化的话是不需要重新注册服务的,直接停止服务,然后用新的文件覆盖原来的文件即可,如果路径发生变化,应该先卸载这个服务,然后重新安装这个服务。
Window服务应用程序体系结构
.net framework对windows服务提供了更多的支持,在命名空间System.ServiceProcess下.
包括类如下:
ServiceBase 所有Window服务的基类
ServiceController 该类的一个实例代表一个具体的windows服务
ServiceControllerPermission 用于控制ServiceController的使用权限
ServiceInstaller 用于执行对windows服务的安装
ServiceProcessInstaller 用于执行对windows服务的安装,与上类的不同的是,该类可以代表一个可以执行的windows服务的进程.
ServiceBase类
ServiceBase方法:
|
方法 |
描述 |
|
Run() |
运行一个windows服务 |
|
OnContinue() |
继续执行服务 |
|
OnCustomCommand() |
向windows服务发出自定指令 |
|
OnPause() |
暂停正在运行的windows服务 |
|
OnPowerEvent() |
当计算机的电源状态改变是调用 |
|
OnShutDown() |
当系统关闭条用OnStart()开始一个windows服务 |
|
OnStop() |
结束一个windows服务 |
ServiceBase属性:
|
属性 |
描述 |
|
AutoLog |
表示是否将开始,结束,暂停,继续等指令写入事件日志 |
|
CanHandlePowerEvent |
表示该服务是否支持电源事件 |
|
CanPauseAndContinue |
表示该服务是否支持暂停和继续功能 |
|
CanShutDown |
表示该服务是否支持关闭功能 |
|
CanStop |
表示该服务是否支持结构功能 |
|
EventLog |
应用程序的时间日志 |
|
ServiceName |
该服务名称 |
ServiceController类
服务控制类,用于控制windows服务的各种具体行为,它既可以控制本地的windows服务,有可以控制远程的windows服务。
ServiceControler的方法:
|
方法 |
描述 |
|
GetDivices() |
得到一台计算机上设备驱动器服务 |
|
GetServices() |
得到一台计算上的非设备驱动器服务 |
|
Close() |
用于断开服务连接,并且释放服务控制器所占用的资源 |
|
Continue() |
继续被暂停的服务 |
|
ExcuteCommand() |
对服务执行一条自定义命令 |
|
Pause() |
暂停服务 |
|
Refresh() |
对所有属性更新 |
|
Start() |
启动服务 |
|
Stop() |
停止服务 |
|
WaitForStatus() |
等待服务到达指定的状态 |
window 服务(一)的更多相关文章
- C#编写window服务,一步一步(1)
Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...
- WPF Window 服务安装
一.安装服务 1.已管理员的身份启动CMD 2.输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车 3.输入 InstallUtil.exe ...
- Window服务初级教程以及log4net配置文件初始化
Window服务初级教程:http://www.jb51.net/article/48987.htm 另外,配置log4net这个日志功能的时候需要初始化,不然会报没有初始化的错误,而且初始化的节点应 ...
- C# 编写Window服务基础(一)
一.Windows服务介绍: Windows服务以前被称作NT服务,是一些运行在Windows NT.Windows 2000和Windows XP等操作系统下用户环境以外的程序.在以前,编写Wind ...
- C# 编写短信发送Window服务
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...
- 自定义Window 服务
自定义window 服务 开发到使用的流程: 1.完成对应的代码之后(代码在底下),右键MyService.cs 添加安装程序 2.添加window服务安装程序打开Service1.cs[设计]页面, ...
- window服务创建
第一步:创建服务 第二步:在Service1.cs视图中 右键 选择”添加安装程序” 这里要注意几个细节 设置上面的属性 这两个分别有属性,具体网上查使用方式 3 实例代码编写 主要下面几个方法 pr ...
- C#在window服务配置Log4Net.dll
1.使用背景: C#window服务下添加一个日志记录程序集(Log4Net.dll) 2.添加和使用步骤如下: 一.下载并引入Log4Net.dll程序集到项目中 下载地址:http://loggi ...
- 创建一个MongoDB数据库再到配置成Window服务再设置用户名密码
1.安装MongoDB数据在官网下载安装 然后在C盘找到C:\Program Files\MongoDB\Server\4.0\bin这个可执行目录 使用cmd进入到这: 2.在C盘根目录创建一个名为 ...
- Window服务项目脚手架
本人最近工作用到window服务程序,于是尝试分享下经验,开源了一个window服务脚手架项目,把window服务程序必不可少的组件集成进去,如日志组件log4net,window服务挂在后台,用日志 ...
随机推荐
- 如何发布开源自己的框架或类库到CocoaPods - 图文讲解
当自己的库已经上传GitHub后,那么如何快速简单的开源自己的库呢? 这里就是介绍如何将自己的类库上传到pods管理库,以便开源所有人都能方便使用. 准备前提: - 项目已上传到GitHub (注意, ...
- Linux命令-终止进程命令:kill
kill -l 查看进程信号 常用信号 例如: 例子参见:Linux命令-查看进程命令:pstree
- Https自签名证书认证及数据请求的封装
在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能.App Transpor ...
- android LinearLayout设置selector不起作用解决
设置方法 : android:background="@drawable/fen_selector" 如果只有这个的话,是不起作用的.还必须加上: android:clickabl ...
- shell学习四十八天----文件校验和匹配
文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校 ...
- 编码规范:Eclipse Checkstyle配置
http://chenzhou123520.iteye.com/blog/1627618 http://www.cnblogs.com/lanxuezaipiao/p/3202169.html
- 关于 Chrome Console 查看DOM详情细节的奇思淫巧
我们期待打印出的dom效果如下: 但某些时候,打印出来,或者通过$0.$1.document.getElementById('####') 等方式打印出来的效果如下: 根据第一幅图我们不难看出,当打印 ...
- mysql (已解决p)MYSQL5.7启动不了,本地计算机上的 MySQL57 服务启动后停止。
找到目录E:\AppServ\MySQL\data 备份data中的数据,然后删除掉data中所有的东西(如果删除不掉请在进程中找到mysqld.exe并且关闭) 打开CMD cd E:\AppSer ...
- 在 IE 浏览器中,使用 bootstrap 使得页面滚动条浮动显示,自动隐藏,自动消失
貌似是从 IE10 开始?为了触屏操作优化浏览器的内容显示,IE 浏览器提供了一种可以浮动显示,自动隐藏的滚动条样式,但是这个样式会在某些情况下造成一些困扰,比如下图... 其实默认情况下,桌面版的 ...
- 【Android】3.20 示例20—全景图完整示例
分类:C#.Android.VS2015.百度地图应用: 创建日期:2016-02-04 一.简介 1.展示全景图的方式 有以下展示全景图的办法: (1)利用地理坐标展示全景图. (2)利用全景图ID ...