好得很程序员自学网

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

Windows服务初探

Windows服务初探

在Windows中,对于一些不需要显示图形界面的应用程序,我们可以把它做成Windows服务,让它在后台运行,例如一些文件监视服务等。一台电脑中的Windows服务可以在“计算机-管理-服务应用程序-服务”中看到,如图:

在这里,我们可以启动或停止一个服务。

创建服务:

下面我们来创建一个文件监视功能的Windows服务。

用VS新建一个项目,模版选择“Windows服务”,在服务代码中会有两个方法:OnStart与OnStop,分别是服务的启动时的执行代码与服务停止时的执行代码。

 public   partial   class   WatchService : ServiceBase
    {
          public   WatchService()
        {
            InitializeComponent();
        }
        FileSystemWatcher watcher;


          ///   <summary> 
         ///   服务开始时执行代码
          ///   </summary> 
         ///   <param name="args"></param> 
         protected   override   void  OnStart( string  [] args)
        {
            WriteLog(  "  服务开始  "  );
              string  path =  @"  D:\text  "  ;
            watcher  =  new   FileSystemWatcher(path);
              //   监视新增文件 
            watcher.NotifyFilter =  NotifyFilters.FileName;
              //  同时监视子目录 
            watcher.IncludeSubdirectories =  true  ;
            watcher.Created  +=  new   FileSystemEventHandler(watcher_Changed);
            watcher.EnableRaisingEvents  =  true  ;
        }

          ///   <summary> 
         ///   服务停止时执行代码
          ///   </summary> 
         protected   override   void   OnStop()
        {
            WriteLog(  "  服务停止  "  );
        }

          private   void  watcher_Changed( object   sender, FileSystemEventArgs e)
        {
              try  
            {
                WriteLog(e.Name  +  "   "  +  e.ChangeType);
            }
              catch   (Exception ex)
            {
                WriteLog(ex.ToString());
            }
        }


          ///   <summary> 
         ///   写日志的方法
          ///   </summary> 
         ///   <param name="msg"></param> 
         private   void  WriteLog( string   msg)
        {
              string  path =  @"  D:\log.txt  "  ;
              using  (StreamWriter sw =  new  StreamWriter(path,  true  ))
            {
                sw.WriteLine(DateTime.Now.ToString()  +  "   "  +  msg);
            }
        }
    } 

 发布服务:

转到服务的界面窗体,点击右键,选择添加安装程序,会出现一个ProjectInstaller.cs。在其界面窗体中,选择serviceInstaller1,右键属性,可以设置服务启动方式,服务名称(服务名称不能与其它Windows服务名称重名),服务描述,服务显示名称等,如图:

另一个serviceProcessInstaller1的属性可以设置服务的运行账户,如图:

完成这些设置后,重新生成服务,打开VS2010命令行工具,以管理员身份运行,输入命令InstallUtil.exe+服务程序地址,如InstallUtil.exe “D:\Service\FileWatchDemo.exe”

提示安装完成后,就可以在服务管理中看到刚刚安装的服务了。

删除服务:

InstallUtil.exe /u +"服务地址" InstallUtil.exe /u "D:\Service\FileWatchDemo.exe"  

SC delete +服务名称,如 sc delete FileWatchService

 

 

标签:  WinForm

作者: Leo_wl

    

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

    

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

版权信息

查看更多关于Windows服务初探的详细内容...

  阅读:41次