C# 写一个简单的Windows Service的服务程序

项目创建及设定部分

使用VS2019创建项目,选择C# Service的选项

按照你喜欢的方式命名,我这边就默认了

添加安装服务,在Service1.csDesign

在设计界面右击,选择如下的"Add Installer"

在出现的"ProjectInstaller.csDesign"中的serviceProcessInstaller1属性中的Account中选择"LocalSystem"

在出现的"ProjectInstaller.csDesign"中的serviceInstall1属性中的ServiceName中设定你想要的名字,例如我设定的名字叫Tody;那在微软的服务系统中,名字就叫Tody;

代码编写部分

右击Service1.cs,选择"View Code"的选项,或直接按F7按钮进入代码部分

如下为Service1的类,这是我们可以在OnStart和OnStop的函数中增加我们的代码;

详细代码如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;

namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {

        private readonly Timer TodyTimer;

        internal void TodyTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            try
            {
                using (FileStream fileStream = new FileStream(@"E:\Tody.log", FileMode.Append))
                {
                    using (StreamWriter streamWriter = new StreamWriter(fileStream))
                    {
                        streamWriter.WriteLine("{0} - {1} ", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), "Tody Test");
                    }
                }
            }
            catch (Exception ex)
            {
               //ex.Message;
            }
        }

        public Service1()
        {
            InitializeComponent();

            // Initial Timer 
            TodyTimer = new Timer(1500); //1.5s
            TodyTimer.Elapsed += TodyTimer_Elapsed;

        }

        protected override void OnStart(string[] args)
        {
            TodyTimer.Start();
        }

        protected override void OnStop()
        {
            TodyTimer.Stop();
        }
    }
}
安装服务部分

在VS2019的命令行中运行安装程序:InstallUtil.exe,该程序在"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe"中

在编译的目录下运行指令:installutil WindowsService1.exe 进行服务的安装(++记得要用管理员++)

如果要卸载 服务的话installutil /u WindowsService1.exe

如下安装成功的结果

启动或停止服务

在系统服务中找到Tody的服务,如下图,右击启动

启动后在E盘的根目录产生了一个文件,就是代码中定义的;

文件中的结果

停止服务则直接选择停止就可以了;

这样,一个简单的服务程序就这样搞定了;应该不难吧;

相关推荐
benchmark_cc32 分钟前
REST API 和 Python SDK 应该怎么选?量化交易数据接口选型实战
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
王的宝库37 分钟前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
Tairitsu_H41 分钟前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
泡海椒1 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
小智老师PMP1 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
samble2 小时前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
江畔柳前堤2 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
Figo_Cheung2 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
UIU1143 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
泡海椒3 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven