.NET6创建Windows服务的实现步骤
之前的文章已经写过了创建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服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
asp.net利用存储过程和div+css实现分页(类似于博客园首页分页)
怎么用aspnetpager.dll这个插件对服务器控件进行分页,今天与我大家分享一下asp.net利用存储过程和div+css实现分页(类似于博客园首页分页)2012-01-01
asp.net 从客户端中检测到有潜在危险的 Request.Form 值错误解
asp.net程序运行时出现以下错误: “/news”应用程序中的服务器错误。2009-05-05
datalist,Repeater和Gridview的区别分析
datalist,Repeater和Gridview的区别分析,需要的朋友可以参考一下2013-03-03
asp.net(文章截取前几行作为列表摘要)无损返回HTML代码
asp.net(文章截取前几行作为列表摘要)无损返回HTML代码,需要的朋友可以参考下2012-12-12
用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中
前几天在博问里发现有人问关于 GridView点击行变色 的问题,突然想起很久很久以前,写过一篇文章 一个简单但常用的表格样式--鼠标划过行变色--简洁实现 ,是关于表格行颜色交替和鼠标指向时变色的,正好今天把那一篇补充和扩展一下2008-09-09


最新评论