C#创建windows服务(一:初识windows服务)

本文详细介绍Microsoft Windows服务的概念,包括服务的特性、创建步骤及关键属性设置。讲解了如何利用Visual Studio创建服务项目,设置服务名称、启动类型等属性,并实现OnStart和OnStop方法以定制服务行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 、 服务简介

  Microsoft Windows 服务(过去称为 NT 服务)允许用户创建可在其自身的 Windows 会话中长时间运行的可执行应用程序。 这些服务可在计算机启动时自动启动,可以暂停和重启,并且不显示任何用户界面。 这些功能使服务非常适合在服务器上使用,或者需要长时间运行的功能(不会影响在同一台计算机上工作的其他用户)的情况。还可以在与登录用户或默认计算机帐户不同的特定用户帐户的安全性上下文中运行服务。

 

二 、 创建windows服务

  通过  右击项目  >>  添加  >>  windows服务   便可创建服务。

 

三 、关于windows服务组件

 

属性

 ServiceName 

 服务名称
 Language  本的化语言
 Localizable  确定是否将为此对象生成可本的化的代码。
 AutoLog  获取可用于写入应用程序事件日志服务命令调用,如启动和停止通知事件日志。
 CanHandleSessionChangeEvent 
 CanStop  获取或设置一个值,指示它启动后是否可以停止服务。
 CanShutdown  获取或设置一个值,该值在系统关闭时是否应通知服务。
 CanPauseAndContinue  获取或设置一个值,该值指示是否可以暂停和恢复该服务。
 CanHandlePowerEvent  获取或设置一个值,该值指示服务是否可以处理计算机电源状态更改的通知。
 ExitCode  获取或设置该服务的退出代码。
 ServiceHandle 获取服务的服务控制句柄。

 

要创建功能性服务,你至少必须:

  • 设置 ServiceName 属性。

  • 替代并指定 OnStart 和 OnStop 方法的代码,以自定义你的服务的行为方式。

  1. 在“属性”窗口中,为服务设置 ServiceName 属性。

    设置 ServiceName 属性。

     备注:

    ServiceName 属性的值必须始终与记录在安装程序类中的名称相匹配。 如果更改此属性,你还必须更新安装程序类的ServiceName 属性。

  2. 设置下列任何一个属性,确定你的服务的运行方式。

    属性设置
    CanStopTrue 表示服务将接受请求停止运行;false 将阻止服务被停止。
    CanShutdownTrue 表示当服务所在的计算机关机时服务需要接受通知,启用它来调用 OnShutdown 过程。
    CanPauseAndContinueTrue 表示服务将接受请求暂停或恢复运行;false 将阻止服务被暂停或恢复。
    CanHandlePowerEventTrue 表示服务可处理计算机电源状态更改的通知;false 将阻止向服务通知这些更改。
    AutoLogTrue 将在你的服务执行操作时向应用程序事件日志写入信息条目;false 将禁用该功能。 有关详细信息,请参阅如何:记录关于服务的信息. 注意:默认情况下,将 AutoLog 设置为 true

     备注

    当 CanStop 或 CanPauseAndContinue 设置为 false 时,“服务控制管理器”将禁用相应的菜单选项来停止、暂停或继续该服务。

  3. 访问代码编辑器,并填写你想要对 OnStart 和 OnStop 过程的处理逻辑代码。如下:  

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        partial class Service1 : ServiceBase
        {
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
                // TODO: 在此处添加代码以启动服务。
            }
    
            protected override void OnStop()
            {
                // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
            }
        }
    }
  4. 替代你想要定义功能的任何其他方法。

  5. 安装服务。 有关更多信息,请参见 https://www.cnblogs.com/xieyang07/p/10192514.html

转载于:https://www.cnblogs.com/xieyang07/p/10192503.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值