.NET6创建Windows服务

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

C#创建Windows服务_c# 创建windows服务_故里2130的博客-CSDN博客

 不过之前使用的是.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.现在就和正常的服务一样了,有开始,有停止,操作后,然后打开日志,可以看到服务的记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化测试框架[Cypress概述]

目录 前言&#xff1a; Cypress简介 Cypress原理 Cypress架构图 Cypress特性 各类自动化测试框架介绍 Selenium/WebDriver Karma Karma的工作流程 Nightwatch Protractor TestCafe Puppeteer 前言&#xff1a; Cypress是一个基于JavaScript的端到端自动化测试框架…

抖音seo矩阵系统源码|需求文档编译说明(三)

文章目录 批量剪辑工具技术源码框架 短视频SEO矩阵系统源码技术开发&#xff0c;遵循步骤抖音矩阵系统源码搭建功能 开发语言及开发环境 抖音账号矩阵系统源码搭建包括以下步骤 概要 ​​抖音seo源码&#xff0c;抖音矩阵系统如何使用源码二次开发&#xff0c;开发的功能有那些…

如何使用ChatGPT处理excel

用ChatGPT处理excel&#xff0c;我们需要用到的主要工具是ChatGPT和vba代码。 VBA代码是一种用于Excel&#xff0c;Word&#xff0c;PPT的Microsoft Office软件的编程语言。 可以让用户通过编写一些简单的指令和操作&#xff0c;实现自动化、自定义和数据处理等功能。 就像你编…

怎么做好技术团队规划

一、做规划包括哪些东西 业务结果&#xff1a; 直白说就是业务层面的战绩&#xff0c;你团队打造了一个公司 GMV 占比超过 50%的商城&#xff0c;或者支撑了某个快速发展业务&#xff0c;这些都是业务结果&#xff0c;用业务数字来说话。 技术创新&#xff1a; 由技术人员发起…

基于UDP协议的千兆以太网传输(FPGA)

[TOC]基于UDP协议的千兆以太网传输&#xff08;FPGA&#xff09; 一、UDP协议概述 UDP协议是一种基于无连接协议&#xff0c;即发送端发送数据无需确认接收端是否存在&#xff1b;接收端收到数据后也无需给发送端反馈是否收到&#xff0c;所以UDP在数据发送过程中允许丢失一两…

LangChain 介绍及相关组件使用总结

一、langChain LangChain 是一个由语言模型LLMs驱动的应用程序框架&#xff0c;它允许用户围绕大型语言模型快速构建应用程序和管道。 可以直接与 OpenAI 的 ChatGPT 模型以及 Hugging Face 集成。通过 langChain 可快速构建聊天机器人、生成式问答(GQA)、本文摘要等应用场景。…

Moveit1 机器人配置包超详细解析

前言 Moveit的robot_moveit_config包里有很多文件&#xff0c;在配置时容易搞不清关系&#xff0c;导致配置过程艰难、漫长。 同时互联网上的文档几乎没有详细介绍这部分配置包的&#xff0c;大神各有各的配法&#xff0c;比较混乱。 因此笔者整理了配置包内各个重要的文件&…

Dart语法01-变量、内置类型、操作符、方法与异常

Dart基础 文章目录 Dart基础变量final与const 内置的类型Numbers&#xff08;数值&#xff09;Strings&#xff08;字符串&#xff09;Booleans&#xff08;布尔值&#xff09;Lists&#xff08;列表&#xff09;Maps&#xff08;映射集合&#xff09;Runes&#xff08;用于在字…

ARM-异常与中断(四)

文章目录 中断中断请求、中断源中断服务程序保存现场、恢复现场中断仲裁、中断优先级中断嵌套 异常广义上的异常同步异常异步异常精确异步异常&#xff08;Precise Asynchronous Exception&#xff09;非精确异步异常&#xff08;Imprecise Asynchronous Exception&#xff09;…

【推荐】win 安装 rust 1.70

目录 一、下载二、安装先决条件MinGW三、安装Rust四、配置国内镜像五、检查是否安装成功五、参考文章 一、下载 官网地址&#xff1a;https://www.rust-lang.org/zh-CN/ 二、安装先决条件MinGW win 安装 C运行环境 - MinGW 三、安装Rust 3.1首先设置安装路径和环境变量 配…

赛效:PDF文件怎么加密

1&#xff1a;在网页上打开并登录91ai工具&#xff0c;在特色功能里点击“PDF加密”。 2&#xff1a;点击上传文件&#xff0c;将本地PDF文件添加上去。 3&#xff1a;文件上传成功后&#xff0c;在文件下方设置密码后点击“开始加密”。 4&#xff1a;加密完成后点击下方下载按…

12.通用定时器基本原理

1.通用定时器概述&#xff1a; &#xff08;1&#xff09;STM32定时器 STM32F10x系列总共最多有8个定时器&#xff1a; &#xff08;2&#xff09;三种STM32定时器区别&#xff1a; &#xff08;3&#xff09;通用定时器功能特点描述&#xff1a; STM32的通用TIMx(TIM2、TIM…