.NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟
之前的文章已經(jīng)寫過了創(chuàng)建Windows服務(wù)。
C#創(chuàng)建Windows服務(wù)
不過之前使用的是.NET Framework創(chuàng)建的Windows服務(wù)。現(xiàn)在已經(jīng)2023年了,其中vs2022有新的方法去創(chuàng)建Windows服務(wù),本次使用.NET6創(chuàng)建Windows服務(wù)。
1.選擇如圖所示,其中vs2022這樣的,vs2019不一樣,但是都是worker service
2.創(chuàng)建完成是這樣的
3.安裝Microsoft.Extensions.Hosting.WindowsServices
這里注意版本,選擇的是net6,好像只能安裝6版本的。
nuget里面安裝
4.服務(wù)命名,Program.cs文件
namespace WorkerServiceDemo{ public class Program {public static void Main(string[] args){ IHost host = Host.CreateDefaultBuilder(args) .UseWindowsService(options => { //給服務(wù)命名,在Windows服務(wù)中的會顯示名字 options.ServiceName = 'NET6故里2130'; }).ConfigureServices(services =>{ services.AddHostedService<Worker>();}).Build(); host.Run();} }}5.服務(wù)里面寫啟動,停止,以及執(zhí)行任務(wù),Worker.cs中寫
里面的業(yè)務(wù)就是,檢測啟動,停止,每次執(zhí)行任務(wù)都輸出
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í)行任務(wù)/// </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},服務(wù)執(zhí)行!');}await Task.Delay(1000, stoppingToken); }}/// <summary>/// 服務(wù)啟動/// </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},服務(wù)啟動!'); } return base.StartAsync(cancellationToken);}/// <summary>/// 服務(wù)停止/// </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},服務(wù)停止!'); } return base.StopAsync(cancellationToken);} }}6.效果
7.實際情況,我們肯定不是這么使用,但是這樣調(diào)試肯定是可以的,接下來,我們安裝此服務(wù),變成Windows服務(wù)的樣子,首選先進行發(fā)布
8.執(zhí)行此命令
sc.exe create '故里2130' binpath='D:\code\WorkerService1\WorkerServiceDemo\bin\Release\net6.0\publish\WorkerServiceDemo.exe'9.此時打開Windows服務(wù),看到已經(jīng)有了
10.現(xiàn)在就和正常的服務(wù)一樣了,有開始,有停止,操作后,然后打開日志,可以看到服務(wù)的記錄。
到此這篇關(guān)于.NET6創(chuàng)建Windows服務(wù)的實現(xiàn)步驟的文章就介紹到這了,更多相關(guān).NET6創(chuàng)建Windows服務(wù)內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
