vs2019 创建Windows Service

  •  如果讨厌用windows窗体创建,还要避免调试麻烦可以用Topshelf开源服务框架详见:Topshelf:

https://blog.csdn.net/tx1721110240/article/details/118722296

  •  首先创建一个Windows服务程序

  •  编译器生成项目如下:

  •  双击右侧Service1.cs,然后在左侧右键单机添加安装程序

 

 如图,我们看见了2个控件

右键serviceInstaller1单击属性

 将ServiceName修改为TestService,这将是我们服务中显示的名称。

然后右键serviceProcessInstaller1单击属性,设置Account这代表着用那种用户启动这个服务

  • 代码编写

Program.cs中Main方法是整个程序的起点,并且可以调用多个服务程序

 在服务代码中,OnStart和OnStop只会执行一次,分别在开始和停止的时候。除此之外还有OnContinue,OnPause等等,详细请在ServiceBase处按F12,从元数据。

namespace TestWindowsService
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            try
            {
                this.WriteLog("服务启动");
                this.ToDoSomeThings();
            }
            catch (Exception ex)
            {
                this.WriteLog(ex.Message);
                ServiceController serviceController = new ServiceController();
                if (serviceController.CanStop)
                {
                    serviceController.Stop();
                }
            }
            
        }

        protected override void OnStop()
        {
            try
            {
                this.WriteLog("服务结束");
            }
            catch (Exception ex)
            {
                this.WriteLog(ex.Message);
                ServiceController serviceController = new ServiceController();
                if (serviceController.CanStop)
                {
                    serviceController.Stop();
                }
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private void ToDoSomeThings() 
        {
            DateTime dateTime = DateTime.Now;
            if (dateTime.Hour == 14 && dateTime.Minute == 30)
            {
                int a = 0;
                for (int i = 0; i < 10000; i++)
                {
                    a += i;
                }
                this.WriteLog(a.ToString());
            }
            
        }
        /// <summary>
        /// 记录日志
        /// </summary>
        /// <param name="LogContent"></param>
        private void WriteLog(string LogContent) 
        {
            string FilePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "\\Log.txt";
            FileStream fileStream = null;
            if (File.Exists(FilePath))
            {
                fileStream = new FileStream(FilePath, FileMode.Append);
            }
            else
            {
                fileStream = new FileStream(FilePath, FileMode.OpenOrCreate);
            }
            StreamWriter streamWriter = new StreamWriter(fileStream);
            streamWriter.WriteLine(DateTime.Now + System.Environment.NewLine + LogContent);
            
            streamWriter.Close();
            fileStream.Close();
            GC.Collect();
        }
    }
}
  •  保存并生成后,将服务安装

 详细安装方式见上一篇

https://blog.csdn.net/tx1721110240/article/details/102649542

  • 调试方式

注:因为服务未启动时无法产生进程,所以一般调试都会在项目中再创建一个控制台或窗体,调用需要调试的方法达到调试的目的,而不会使用这种调试方式。

首先启动服务

在vs中调试-》附加到进程

 选择和项目名称一样的进程名,点击附加后就可以正常调试了

在C#中创建Windows Service涉及几个关键步骤。以下是创建一个基础Windows Service的简要指南: **Step 1:添加项目模板** - 打开Visual Studio,选择“文件”> “新建”> “项目”。 - 在“模板”区域选择“Windows服务”类别,比如“Class Library (Windows Service)”,然后输入项目名称并点击“创建”。 **Step 2:设计服务类** - 在生成的新项目中,会有一个名为`YourServiceName.cs`的服务类,继承自`ServiceBase`类。 - 需要在服务类中重写一些基本方法,如`OnStart()`用于初始化服务开始时的操作,`OnStop()`负责清理资源。 ```csharp using System.ServiceProcess; public partial class YourServiceName : ServiceBase { public YourServiceName() { InitializeComponent(); } protected override void OnStart(string[] args) { // 在这里编写服务开始时执行的任务,如开启定时任务或其他操作 DoWork(); } protected override void OnStop() { // 在这里编写服务停止时执行的清理操作 } private void DoWork() { // 实际的服务业务逻辑代码 } } ``` **Step 3:配置服务属性** - 在解决方案资源管理器中找到你的服务项目,右键单击选择“属性”。 - 在属性窗口中,切换到“常规”选项卡,设置“名称”、“描述”等基本信息。 - 然后转到“服务行为”选项卡,勾选“此项目作为服务运行”。 **Step 4:部署和注册服务** - 你可以直接在调试模式下测试服务,但在生产环境中通常需要先发布应用。 - 使用`installutil.exe`命令行工具安装服务,或者通过Visual Studio的“工具”>“附件”>“Windows服务控制器”来手动安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值