.net 5 windows 系统服务 workserver

news/2024/12/6 18:08:35/

workserver是一种专门用来运行耗时服务所提供的一种项目模板

我们可以这样创建

完成后,安装nuget包 (一个是windows的系统服务,一个是linux的系统服务)

Install-Package Microsoft.Extensions.Hosting.WindowsServices
Install-Package Microsoft.Extensions.Hosting.Systemd

最后,我们的代码如下

Program

    public class Program{public static void Main(string[] args){CreateHostBuilder(args).Build().Run();}public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).UseWindowsService().UseSystemd().ConfigureServices((hostContext, services) =>{services.AddHostedService<Worker>();});}

Worker

    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}", DateTime.Now);Log($"Worker running at: {DateTime.Now}");await Task.Delay(1000, stoppingToken);}}private void Log(string data){using (StreamWriter sw = new StreamWriter("log.txt", true)){sw.WriteLine(data);}}}

直接运行 

 部署为服务运行

又增加两个bat脚本

install.bat

set current_path=%~dp0
sc create WorkerServiceDemo binPath= %current_path%WorkerServiceDemo.exe
sc config WorkerServiceDemo start= auto
sc start WorkerServiceDemo

 uninstall.bat

sc stop WorkerServiceDemo
sc delete WorkerServiceDemo

然后,管理员方式执行 install.bat 进行安装启动服务。

使用  uninstall.bat 来卸载服务 。

执行服务后, 在系统服务里就有了我们的服务

 

 日志也是正常输出的。

2022年3月31日

最近发现一个bug,就是后台服务的时候,环境地址是有问题的

建议使用以下方式 避免

Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;

另外 .NET Worker Service 如何优雅退出

依赖注入以下接口
IHostApplicationLifetime hostApplicationLifetime然后主动调用 
this.hostApplicationLifetime.StopApplication();


http://www.ppmy.cn/news/220343.html

相关文章

如何在 JavaScript 中创建自定义警告框

本文将介绍如何使用 jQuery UI、SweetAlert2 和自定义警报功能在 JavaScript 中创建自定义警报框。 使用 jQuery UI 创建自定义警告框 我们可以使用 jQuery UI 来模仿 JavaScript 本机 alert() 函数的功能。 尽管 jQuery UI 有很多 API&#xff0c;您可以使用它的 dialog() AP…

如何在企业中培养平台工程文化?

平台工程是一种新兴的技术方法&#xff0c;可以加速应用程序的交付和产生商业价值的速度。平台工程通过提供具有自动化基础设施操作的自助服务能力&#xff0c;改善开发者的体验与生产力&#xff0c;同时降低操作的复杂性&#xff0c;并缓解了开发过程中的摩擦。 当然&#…

ELK+FileBeat日志分析系统

一、 ELK日志分析系统概述 1、ELK简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Filebeat占用资源少&#xff0c…

PCL升级到1.12.0时遇到的问题

1.engine库找不到&#xff1a;engine/core no such file or directory 解决方法&#xff1a;设置软连接后重新编译 sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen sudo ln -s /usr/include/eigen3/unsupported /usr/include/unsupported 2.plus is not a member of…

ChatGPT-4 表现不佳(变笨)?开发者解释原因并承认存在不稳定性

最近&#xff0c;OpenAI 开发的大模型 GPT-4 出现了一些问题&#xff0c;被质疑是否变笨了。根据 Hacker News 上的一篇帖子&#xff0c;发帖人称 GPT-4 生成的代码错误更多了&#xff0c;给出的答案不再有深度了。这个帖子引发了许多人对 GPT-4 的怀疑和不信任。 然而&#xf…

处理机和处理器的区别

一、指代不同 1、处理机&#xff1a;是处理计算机系统中存储程序和数据&#xff0c;并按照程序规定的步骤执行指令的部件。 2、处理器&#xff1a;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。 二、操作方式不同 1、处理机&#xff1a;首…

几种intel CPU性能对比

测试算法 分解质因数&#xff08;10210825876492973539&#xff09;。 结果 CPU型号 核心 主频 主机 操作系统 OS 位数&#xff08;b&#xff09; JVM 耗时&#xff08;s&#xff09; I5 双核四线程 2.5GHz MAC BOOK PRO MAC OS X 64 1.8&#xff08;64b&#x…