C# 创建一个简单的Windows服务

有时候需要在服务器上长时间运行一些小程序,除了WinForm外,还可以运行Windows服务。相比WinForm,Windows服务更稳定。

Windows服务介绍

Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。本文就向大家介绍如何运用Visual C#来一步一步创建一个文件监视的Windows服务程序,然后介绍如何安装、测试和调试该Windows服务程序。
在这里插入图片描述

创建Windows服务

1、以VS2019为例:在解决方案上右键——>添加——>新建项目

在这里插入图片描述

2、创建完成后,在出现的设计视图上,点击右键——>添加安装程序

在这里插入图片描述

3、更改serviceProcessInstaller1的Account为LocalSystem

在这里插入图片描述

4、更改serviceInstaller1的Descrption和ServiceName

在这里插入图片描述

5、右键Service1.cs查看代码,开始编写代码

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace WindowsServiceDemo
{
    public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }
        //开启服务
        protected override void OnStart(string[] args)
        {
            //服务开启执行代码
            Task.Run(() => Service());
        }
        //关闭服务
        protected override void OnStop()
        {
            WriteTxt("关闭服务");
        }

        private void Service() 
        {
            WriteTxt("开启服务");
            int nums = 0;//记录次数
            while (true)
            {
                nums++;
                WriteTxt("第 " + nums + " 次循环");
                Thread.Sleep(1000 * 3);//等待三秒
            }
        }

        //记录日志
        public void WriteTxt(string content)
        {
            try
            {
                string exeFolder = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                string Directory = exeFolder + "\\logs";
                string filepath = Directory + "\\日志(" + DateTime.Now.ToString("yyyy-MM-dd") + ").txt";
                if (!System.IO.Directory.Exists(Directory))
                    System.IO.Directory.CreateDirectory(Directory);

                StreamWriter sw = new StreamWriter(filepath, true, Encoding.UTF8);
                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":" + content);
                sw.Close();

            }
            catch { }
        }
    }
}

6、编译,生成,打开项目所在的Debug文件夹,新建两个文本文件install.txt,Uninstall.txt

在这里插入图片描述
(1)在install.txt中写入如下脚本命令:

pushd %~dp0
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start AMyService
sc config AMyService start= auto
Pause

在这里插入图片描述
(2)在Uninstall.txt中写入如下脚本命令:

pushd %~dp0
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause

(3)将两个txt文件的后缀改成bat
在这里插入图片描述

7、右键,以管理员运行instail.bat,安装并启动服务

在这里插入图片描述

logs中会生成日志

在这里插入图片描述

服务管理器中会看到刚刚启动的服务

在这里插入图片描述

8、右键,以管理员身份运行Uninstail.bat,停止并卸载服务

在这里插入图片描述

以上便是创建一个简单的Windows服务的过程!

欢迎访问作者个人技术博客:BlackvonCode(www.blackvon.cn)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值