雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

.NET6创建windows服务图文教程

2024-09-28 28

本文记录了使用Visual studio2022创建windows服务,并且安装windows服务设置为自动启动的步骤。

1、创建一个worker service

新建一个项目,选择辅助角色服务,如图所示:

我创建了一个名为WorkerService的项目,创建完成后的目录结构如图所示:

2、安装Microsoft.Extensions.Hosting.WindowsServices

当前项目可在linux下运行,但是还不能以服务的方式在windows上安装运行。所以需要安装Microsoft.Extensions.Hosting.WindowsServices包。可以通过Nuget安装。如果是使用.NET6版本的话可以选择6.x.x版本的包安装。

3、设置服务名称

在Program.cs文件中使用UseWindowsService设置服务名称。它会显示在Windows服务列表中。

using WorkerService;

IHost host = Host.CreateDefaultBuilder(args)
    .UseWindowsService(options => {
        // 设置服务名称,会在windows服务列表里显示
        options.ServiceName = "LeavescnWorkerService";
    })
    .ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
    })
    .Build();

await host.RunAsync();

4、修改Worker.cs,编写需要执行的代码

在Worker.cs中,可以在ExecuteAsync方法里编写需要执行的代码。也可以重写StartAsync,StopAsync方法添加需要在服务启动和结束时需要执行的代码。

namespace WorkerService
{
    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;

        public Worker(ILogger<Worker> logger)
        {
            _logger = logger;
        }

        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                await Task.Delay(1000, stoppingToken);
            }
        }
        public override Task StartAsync(CancellationToken cancellationToken) {
            _logger.LogInformation("Worker starting at: {time}", DateTimeOffset.Now);
            return base.StartAsync(cancellationToken);
        }

        public override Task StopAsync(CancellationToken cancellationToken)
        {
            _logger.LogInformation("Worker ending at: {time}", DateTimeOffset.Now);
            return base.StopAsync(cancellationToken);
        }
    }
}

5、发布程序

编写代码完成后,可以发布程序。右键项目,选择发布,然后选择将程序发布到本地文件夹。默认发布到\workerservice\bin\release\net6.0\publish文件夹下。

6、注册Windows服务

通过sc create命令创建Windows服务。命令里也可以设置在服务列表里显示的服务名称。

sc.exe create LeavescnWorkerService  binpath="D:\GitHub\WorkerService\WorkerService\bin\Release\net6.0\publish\WorkerService.exe"

CreateService 成功说明Windows服务创建成功了。

可以在服务列表里看到刚才创建的LeavescnWorkerService服务了。我们可以启动服务,也可以右键设置属性,把服务设置为自动启动。

可以通过sc delete <ServiceName>命令删除Windows服务。

更新于:1个月前
赞一波!

文章评论

评论问答