zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    JAVA GUI设
    3.4 jmu-java-随机数-使用蒙特卡罗法计算圆周率的值 (10 分)
    问题:关于2.3 jmu-Java-02基本语法-03-身份证排序 (9 分)
    关于3.1 jmu-Java-03面向对象基础-01-构造函数与toString (3 分)
    linux vim文件编辑的常用命令
    linux的常用命令
    linux文件存储方式
    第一个java
    hdu 2795
    hdu 1394
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2626213.html
Copyright © 2011-2022 走看看