当前位置: 代码网 > it编程>编程语言>Asp.net > .NET6创建Windows服务的实现步骤

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

2024年05月18日 Asp.net 我要评论
之前的文章已经写过了创建windows服务。c#创建windows服务不过之前使用的是.net framework创建的windows服务。现在已经2023年了,其中vs2022有新的方法去创建win

之前的文章已经写过了创建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服务内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com