.NET6創(chuàng)建Windows服務的實現(xiàn)步驟
之前的文章已經(jīng)寫過了創(chuàng)建Windows服務。
不過之前使用的是.NET Framework創(chuàng)建的Windows服務?,F(xiàn)在已經(jīng)2023年了,其中vs2022有新的方法去創(chuàng)建Windows服務,本次使用.NET6創(chuàng)建Windows服務。
1.選擇如圖所示,其中vs2022這樣的,vs2019不一樣,但是都是worker service
2.創(chuàng)建完成是這樣的
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.服務里面寫啟動,停止,以及執(zhí)行任務,Worker.cs中寫
里面的業(yè)務就是,檢測啟動,停止,每次執(zhí)行任務都輸出
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> /// 執(zhí)行任務 /// </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},服務執(zhí)行!"); } 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.實際情況,我們肯定不是這么使用,但是這樣調(diào)試肯定是可以的,接下來,我們安裝此服務,變成Windows服務的樣子,首選先進行發(fā)布
8.執(zhí)行此命令
sc.exe create "故里2130" binpath="D:\code\WorkerService1\WorkerServiceDemo\bin\Release\net6.0\publish\WorkerServiceDemo.exe"
9.此時打開Windows服務,看到已經(jīng)有了
10.現(xiàn)在就和正常的服務一樣了,有開始,有停止,操作后,然后打開日志,可以看到服務的記錄。
到此這篇關于.NET6創(chuàng)建Windows服務的實現(xiàn)步驟的文章就介紹到這了,更多相關.NET6創(chuàng)建Windows服務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解析Asp.net,C# 純數(shù)字加密解密字符串的應用
本篇文章是對Asp.net,C# 純數(shù)字加密解密字符串的應用進行了詳細的分析介紹,需要的朋友參考下2013-05-05asp.net 數(shù)據(jù)庫的連接和datatable類
asp.net下數(shù)據(jù)庫的連接與數(shù)據(jù)庫datatable類實現(xiàn)代碼。2009-05-05ASP.Net 圖片存入數(shù)據(jù)庫的實現(xiàn)代碼
在很多時候,我們有這樣的需求:把圖片存入到數(shù)據(jù)庫當中。在一些應用程序中,我們可能有一些敏感的資料,由于存儲在文件系統(tǒng)(file system)中的東西,將很容易被某些用戶盜取,所以這些數(shù)據(jù)不能存放在文件系統(tǒng)中。2008-11-11Repeater控件實現(xiàn)編輯、更新、刪除等操作示例代碼
如何在Repeater控件中實現(xiàn)像GridView控件一樣的編輯、更新、刪除功能?下面有個不錯的示例,感興趣的朋友可以參考下,希望對大家有所幫助2014-01-01