好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

windows service (服务)创建流程

windows service (服务)创建流程

windows service (服务)创建流程

一、概念

二、创建流程

 1、添加模板、配置服务

 2、写服务代码

 3、安装与卸载、调试

一、概念

window service,使用 Microsoft Visual Studio 或 Microsoft .NET Framework SDK,可以通过创建以服务方式安装的应用程序来轻松创建服务。  这种类型的应用程序称为 Windows 服务。   使用框架功能,可以创建服务,安装服务和启动、停止服务以及用其他方式控制服务的行为。

主要有三个类:

  ServiceBase   
 描述  ServiceBase  类的主要功能,该类用于创建服务。 
  ServiceProcessInstaller   
 描述  ServiceProcessInstaller  类的功能,该类与  ServiceInstaller  类一起用来安装和卸载您的服务。  
  ServiceInstaller   
 描述  ServiceInstaller  类的功能,该类与  ServiceProcessInstaller  类一起用来安装和卸载您的服务。  

二、创建流程

1、 添加模板、配置服务

在 “文件” 菜单上,单击 “新建项目”,

将打开 “新建项目” 对话框。

Visual C# 项目模板的列表中选择 “Windows 服务” ,并将项目命名为 WSDemo。  单击 “确定”

刚创建,你可以点击项目属性看到,默认target framework,可能是.NET framework4 client profile,然后项目也没用出现app.config。这时候可以选择为.NET framework 4,就会出现app.config,而且之后添加其它项目,才不会因为是client profile 的版本简化而无法编译通过。

为服务创建安装程序、及配置

在Service1视图设计器中,右键单击“添加安装程序”,

默认情况下,向您的项目添加一个包含两个安装程序的组件类。  将该组件命名为  ProjectInstaller ,它包含的安装程序分别是服务的安装程序和服务关联进程的安装程序。

在  ProjectInstaller 单击  ServiceInstaller1  , 在 “属性” 窗口中,确保  ServiceName  属性已设置为 自己的“Service1”。

将  StartType  属性设置为  Automatic 。

在设计器中单击  ServiceProcessInstaller1  ,   将  Account  属性设置为  LocalSystem 。  这将使得在本地服务帐户上安装和运行该服务。

2、写服务代码

这样windows 简单服务就配置好了。然后写一个简单示例。

         private   bool  autoCML =  false  ;
          private   Timer smsTimer;
          private  Log4NetLogService loger =  new   Log4NetLogService();
          static   readonly   object  padlock =  new   object  ();
          public   Service1()
        {
            InitializeComponent();
            log4net.Config.XmlConfigurator.Configure();
        }

          protected   override   void  OnStart( string  [] args)
        {
            loger.LogInfo(  "  启动处理操作服务  "  );
            smsTimer  =  new   Timer();
              int  interval =  5000  ;
              if  (! int .TryParse(ConfigurationManager.AppSettings[ "  SendSMSInterval  " ],  out   interval))
            {
                interval  =  6000  ;
            }
            smsTimer.Interval  =  interval;
            smsTimer.Enabled  =  true  ;
            smsTimer.Elapsed  +=  new   ElapsedEventHandler(smsTimer_Elapsed);
            smsTimer.Start();
        }

          private   void  smsTimer_Elapsed( object   sender, ElapsedEventArgs e)
        {
              lock   (padlock)
            {
               loger.LogInfo(  "  处理操作开始  "  );
                  try  
                {
                    AutoUpdateCml();
                }
                  catch   (Exception ex)
                {
                    loger.LogException(  "  处理操作信息错误  "  , ex);
                }
                loger.LogInfo(  "  处理操作结束  "  );
            }
        }

          void   AutoUpdateCml()
        {
              string  Jobtime = ConfigurationManager.AppSettings[ "  autoUpdateCmlAtTime  "  ].ToString();
              //  每天00点,更新一次XX基本信息 
             if  (DateTime.Now.ToString( "  HH  " ) ==  Jobtime)
            {
                  if  (! autoCML)
                {
                      //  YOU JOB 
                    autoCML =  true  ;
                }
                  else  
                {
                    autoCML  =  false  ;
                }
            }
        }

          protected   override   void   OnStop()
        {
          smsTimer.Stop();
          loger.LogInfo(  "  自动操作结束  "  );
        } 

上面的创建方式是用vs自动模板创建的,当然可以自己通过 “System.ServiceProcess.dll"的servicebase类来编写服务。

http://msdn.microsoft.com/zh-cn/library/vstudio/76477d2t.aspx

3、安装与卸载、调试

代码写完后,编译通过后,就可以安装、卸载、调试服务了。

安装、卸载很简单,只要在VS命令行导航到,服务程序的路径。然后运行以下命令就OK了。

CD C:\Users\voro\Documents\Visual Studio 2010\Projects\WSDemo\WSDemo\bin\Debug

安装服务:"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe"  Service1.exe 
net start "Service1"

卸载服务:net stop "Service1"
"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe" /u Service1.exe

调试的话,只能先安装启动服务,然后将该服务附加到进程,就可以调试了。安装好服务后,就可以在win7服务管理里面,管理刚刚启动的服务了。

 

 

 

标签:  调试 ,  windows service ,  windows 服务 ,  安装 ,  卸载

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于windows service (服务)创建流程的详细内容...

  阅读:83次