zoukankan      html  css  js  c++  java
  • C#开发Windows服务 入门

    Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。

    服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。

    服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

    还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务

    一、创建服务

    1、VS新建一个Windows服务项目,命名MyWindowsService

    2、修改Service1为MyService,F7进入代码页面(点击切换代码视图),编写操作逻辑代码

    3、OnStart用于执行服务事件,一般采用线程方式执行方法,便于隔一段事件执行一回

    using System;
    using System.IO;
    using System.ServiceProcess;
    using System.Threading.Tasks;
    
    namespace MyWindowsService
    {
        public partial class MyService : ServiceBase
        {
            public MyService()
            {
                InitializeComponent();
            }
            //服务开启
            protected override void OnStart(string[] args)
            {
                Task.Factory.StartNew(Handle);
            }
            //服务关闭
            protected override void OnStop()
            {
               
            }
    
            //需要定时执行的代码段
            private void Handle()
            {
                while (true)
                {
                    try
                    {
                        var path = AppDomain.CurrentDomain.BaseDirectory + "service.log";
                        var context = "MyWindowsService: Service Stoped " + DateTime.Now + "
    ";
                        WriteLogs(path, context);
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }
            }
    
    
            public void WriteLogs(string path, string context)
            {
                var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
                var sw = new StreamWriter(fs);
                sw.BaseStream.Seek(0, SeekOrigin.End);
                sw.WriteLine(context);
    
                sw.Flush();
                sw.Close();
                fs.Close();
            }
        }
    }
    

      服务不能直接运行,F5会出现

    二、创建服务安装程序

    1、选中MyService.cs,右键-->查看设计器 ;在设计器中右键-->添加安装程序

    2、项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件serviceProcessInstaller1和serviceInstaller1

    3、选中serviceProcessInstaller1组件,查看属性,设置account为LocalSystem,这样能保证无论是什么用户登录都能执行。

    4、选中serviceInstaller1组件,查看属性设置如下

    ServiceName:表示在系统服务中的名称

    StartType:Manual:手动启动,默认停止,Automatic:自动启动

    Description:服务描述

    三、安装、卸载服务

    安装服务需要InstallUtil.exe,一般在电脑这个目录找到C:WindowsMicrosoft.NETFramework64v4.0.30319 

    此处需要注意的是,在C:WindowsMicrosoft.NETFramework目录下有很多类似版本,具体去哪个目录要看项目的运行环境,例 如果是.net framework2.0则需要输入 cd C:WindowsMicrosoft.NETFrameworkv2.0.50727

    1、重新生成MyWindowsService项目

    2、生成的bin目录考到要安装的目录(服务文件已经在附件中):例如:拷贝到C:(服务路径根据实际情况安装,卸载)

    3、窗口+R 打开cmd

      cd C:WindowsMicrosoft.NETFramework64v4.0.30319

      安装服务: Installutil C:inDebugMyWindowsService.exe

      卸载服务: Installutil /u C:inDebugMyWindowsService.exe

    4、我的电脑-->右键管理-->服务和应用程序-->服务  找到我们的服务

    启动服务后会一直执行Handle()方法写日志

    四、调试服务

    首先确保服务已经安装成功,并且处于已启动

    VS-->调试-->附加到进程 找到我们服务名称MyWindowsService确定

    然后断点就进代码了

    如果出现MyWindowsService.exe无法复制或者进程占用的问题

    打开进程管理器,关闭MyWindowsService.exe进程就可以了。

    + 关注

  • 相关阅读:
    POSTGRESQL 批量权限 管理方法
    centos7安装rabbitmq
    centos7使用cron任务的相关命令(与centos6有区别)
    crontab定时执行shell脚本
    使用kong-dashboard
    Kong组件构成及使用
    Docker基本操作命令
    微服务写的最全的一篇文章
    centos7安装kong和kong-dashboard
    sql练习03
  • 原文地址:https://www.cnblogs.com/saywa3b/p/6027144.html
Copyright © 2011-2022 走看看