.NET6创建Windows服务的实现步骤

 更新时间:2023年06月19日 10:51:26   作者:故里2130  
本文主要介绍了.NET6创建Windows服务的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

之前的文章已经写过了创建Windows服务。

C#创建Windows服务

 不过之前使用的是.NET Framework创建的Windows服务。现在已经2023年了,其中vs2022有新的方法去创建Windows服务,本次使用.NET6创建Windows服务。

1.选择如图所示,其中vs2022这样的,vs2019不一样,但是都是worker service

2.创建完成是这样的

3.安装Microsoft.Extensions.Hosting.WindowsServices

这里注意版本,选择的是net6,好像只能安装6版本的。

 nuget里面安装

4.服务命名,Program.cs文件

namespace WorkerServiceDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            IHost host = Host.CreateDefaultBuilder(args)
                 .UseWindowsService(options =>
                 {
                     //给服务命名,在Windows服务中的会显示名字
                     options.ServiceName = "NET6故里2130";
                 })
                .ConfigureServices(services =>
                {
                    services.AddHostedService<Worker>();
                })
                .Build();
            host.Run();
        }
    }
}

5.服务里面写启动,停止,以及执行任务,Worker.cs中写

里面的业务就是,检测启动,停止,每次执行任务都输出

namespace WorkerServiceDemo
{
    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private readonly string filePath = "D:\\Service1.txt";
        public Worker(ILogger<Worker> logger)
        {
            _logger = logger;
        }
        /// <summary>
        /// 执行任务
        /// </summary>
        /// <param name="stoppingToken"></param>
        /// <returns></returns>
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
                using (FileStream stream = new FileStream(filePath, FileMode.Append))
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine($"{DateTimeOffset.Now},服务执行!");
                }
                await Task.Delay(1000, stoppingToken);
            }
        }
        /// <summary>
        /// 服务启动
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task StartAsync(CancellationToken cancellationToken)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服务启动!");
            }
            return base.StartAsync(cancellationToken);
        }
        /// <summary>
        /// 服务停止
        /// </summary>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public override Task StopAsync(CancellationToken cancellationToken)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服务停止!");
            }
            return base.StopAsync(cancellationToken);
        }
    }
}

6.效果

7.实际情况,我们肯定不是这么使用,但是这样调试肯定是可以的,接下来,我们安装此服务,变成Windows服务的样子,首选先进行发布

8.执行此命令

sc.exe create "故里2130" binpath="D:\code\WorkerService1\WorkerServiceDemo\bin\Release\net6.0\publish\WorkerServiceDemo.exe"

9.此时打开Windows服务,看到已经有了

10.现在就和正常的服务一样了,有开始,有停止,操作后,然后打开日志,可以看到服务的记录。

到此这篇关于.NET6创建Windows服务的实现步骤的文章就介绍到这了,更多相关.NET6创建Windows服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ASP.NET Core实现自动依赖注入

    ASP.NET Core实现自动依赖注入

    这篇文章主要介绍了ASP.NET Core实现自动依赖注入的示例,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下
    2021-04-04
  • .NET 6中间件Http Logging使用介绍

    .NET 6中间件Http Logging使用介绍

    这篇文章介绍了.NET 6中间件Http Logging的使用方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 不可或缺的ASP.NET内置对象小结

    不可或缺的ASP.NET内置对象小结

    这篇文章主要介绍了不可或缺的ASP.NET内置对象小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Asp.net移除Server,X-Powered-By和X-AspNet-Version头

    Asp.net移除Server,X-Powered-By和X-AspNet-Version头

    这篇文章主要介绍了Asp.net移除Server, X-Powered-By, 和X-AspNet-Version头,移除X-AspNet-Version很简单,只需要在Web.config中增加相应配置节,感兴趣的朋友一起看看吧
    2024-02-02
  • .NET中用ICSharpCode.TextEditor自定义代码折叠与高亮

    .NET中用ICSharpCode.TextEditor自定义代码折叠与高亮

    这篇文章主要给大家介绍了.NET中用ICSharpCode.TextEditor自定义代码折叠与高亮的相关资料,文中通过示例代码与图片介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 三种asp.net页面跳转的方法

    三种asp.net页面跳转的方法

    跳转页面是大部编辑语言中都会有的,下面我们来分别介绍一下关于.net中response.redirect sever.execute server.transfer三种页面跳转的方法,,需要的朋友可以参考下
    2015-10-10
  • 解析微信支付的实现方法(.NET版)

    解析微信支付的实现方法(.NET版)

    由于微信的广泛利用,基于微信开发的一系列也应运而生,这篇文章主要介绍了解析微信支付的实现方法(.NET版),有兴趣的可以了解一下。
    2016-11-11
  • asp.net中DBNull.Value,null,String.Empty区别浅析

    asp.net中DBNull.Value,null,String.Empty区别浅析

    这篇文章来给大家介绍asp.net中DBNull.Value,null,String.Empty区别浅析,有需要的同学可以参考一下
    2013-08-08
  • 一个简单的ASP.NET Forms 身份认证的实例方法

    一个简单的ASP.NET Forms 身份认证的实例方法

    当访问默认首页default.aspx时,会自动跳转到login.aspx页面上请求登录,随便输入用户名和密码,点击“登录”按钮,会回到首页,并显示当前登录的用户名。
    2013-07-07
  • 基于asp.net MVC 应用程序的生命周期(详解)

    基于asp.net MVC 应用程序的生命周期(详解)

    下面小编就为大家分享一篇基于asp.net MVC 应用程序的生命周期详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论