一.什么是windows服务

      每天我们打开电脑,都在使用windows服务。其实,windows服务只是运行与后台而不需要我们去了解的进程而已,在"开始”菜单-》"运行"中 输入services.msc,就能查看到当前系统 中正在运行的服务。有些服务是自动启动的,有些服务是需要手动启动,通过操作系统能够开启、暂停、停止服务。在实际工作中,经常要求我们开发类似的服务,没有界面,在操作系统中自动执行。

二.C#中如何创建windows服务 

    1. 打开VS工具, 新建项目->windows->windows服务,输入服务名称,点击确定,服务创建完毕。

 

    2.选择默认生成的服务类Service1.cs(如果想添加自己的服务类,可以右击您的项目,选择添加->新建项,在弹出的对话框中选择windows服务,输入服务名称,确定)切换到代码视图 ,vs生成的代码如下:

   View Code

 

  至此,你已经成功创建了一个简单的服务程序。如何实现我们需要的功能呢?在生成的代码中,可以看到Service1.cs中可以重写父类ServiceBase的OnStart(服务开启时执行)、 OnStop(服务停止时执行)、OnPause(服务暂停时执行),在相应的方法体中,你可以实现你想要的功能.如下实例代码:

 1  /// <summary>
 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,查看当前系统运行的服务中有你自己开发的服务程序

  如果你想调试服务程序,可以通过附加进程的 方式进行调试。

 

       

 

 

   

posted on 2012-02-27 23:15  ↗洃冭狼"  阅读(259)  评论(0编辑  收藏  举报