一.什么是windows服务
每天我们打开电脑,都在使用windows服务。其实,windows服务只是运行与后台而不需要我们去了解的进程而已,在"开始”菜单-》"运行"中 输入services.msc,就能查看到当前系统 中正在运行的服务。有些服务是自动启动的,有些服务是需要手动启动,通过操作系统能够开启、暂停、停止服务。在实际工作中,经常要求我们开发类似的服务,没有界面,在操作系统中自动执行。
二.C#中如何创建windows服务
1. 打开VS工具, 新建项目->windows->windows服务,输入服务名称,点击确定,服务创建完毕。
2.选择默认生成的服务类Service1.cs(如果想添加自己的服务类,可以右击您的项目,选择添加->新建项,在弹出的对话框中选择windows服务,输入服务名称,确定)切换到代码视图 ,vs生成的代码如下:
View Code
至此,你已经成功创建了一个简单的服务程序。如何实现我们需要的功能呢?在生成的代码中,可以看到Service1.cs中可以重写父类ServiceBase的OnStart(服务开启时执行)、 OnStop(服务停止时执行)、OnPause(服务暂停时执行),在相应的方法体中,你可以实现你想要的功能.如下实例代码:
2 /// 开启服务
3 /// </summary>
4 /// <param name="args"></param>
5 protected override void OnStart( string[] args)
6 {
7 // TODO: 在此处添加代码以启动服务。
8
9 // this.ConnectDb("OracleDb");
10
11 this.ConnectDb( " OracleDb ");
12
13 this.DownLoadOracleDataThread = new Thread( new ThreadStart(DoadData));
14 this.DownLoadOracleDataThread .Start();
15
16
17 this.VerificationThread = new Thread( new ThreadStart(VericationThread));
18 this.VerificationThread.Start();
19 }
20
21 /// <summary>
22 /// 停止服务
23 /// </summary>
24 protected override void OnStop()
25 {
26 // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
27
28 if ( this.DownLoadOracleDataThread != null)
29 {
30 this.DownLoadOracleDataThread .Abort();
31 }
32 if( this.VerificationThread!= null)
33 {
34 this.VerificationThread.Abort();
35 }
36 // 关闭连接
37 if ( this.oracleDB != null)
38 {
39 this.oracleDB .CloseDb();
40 }
41
42
43 }
至此,我们已经能够开发服务程序了,但是我们开发好的服务程序,要能够在操作系统中运行,需要添加服务安装程序。
三.添加服务安装程序
切换到Service1.cs设计视图器,在任意位置右击,选择"添加安装程序",你会发现在项目中添加了ProjectInstaller.cs,切换到设计视图,右击“serviceInstaller1”选择属性,其中ServiceName设置服务的名称,StartType标识服务的启动类型,默认Manual:手动启动,Automatic:自动启动,Disabled:服务禁止启动,DisplayName标识服务显示的名称,Description标识服务描述。完成这些设置后,生成解决方案。
四.安装部署服务程序
转到VS.NET的命令提示符下。cd进入到你程序的Debug文件夹下
输入"InstallUtil xxxx.exe",如果提示安装成功,你可以在"开始”菜单-》"运行"中 输入services.msc,查看当前系统运行的服务中有你自己开发的服务程序。
如果你想调试服务程序,可以通过附加进程的 方式进行调试。