worker Service创建
在新版本服务中的创建,名称是Worker Service,从.NET Core 2.1开始,就可以使用辅助角色服务模板了,即Worker Service。它可以编写长期服务,作为 Windows 服务进行托管,还支持跨平台部署
创建项目
可以选择net5或者更高版本,这里我选择的net6
Program程序入口
worker默认托管服务类
appsetting配置信息文件
每添加一个托管服务类,都需要在程序入口的配置中添加。
可以在worker中进行实现
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}", DateTimeOffset.Now);LogHelper.WriteLog("Worker", "ExecuteAsync", "Go");
await Task.Delay(10000, stoppingToken);
}
}/// <summary>
/// 服务启动
/// </summary>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public override Task StartAsync(CancellationToken cancellationToken)
{
LogHelper.WriteLog("Worker", "ExecuteAsync", "服务启动");
return base.StartAsync(cancellationToken);
}
/// <summary>
/// 服务停止
/// </summary>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public override Task StopAsync(CancellationToken cancellationToken)
{
LogHelper.WriteLog("Worker", "ExecuteAsync", "服务停止");
return base.StopAsync(cancellationToken);
}
可以直接运行调试
发布
发布项目,这里我选择发布的属性,这里我是发布在window
服务运行
创建.bat脚本运行
@echo off
rem 创建服务
sc.exe create "服务名" binpath= "E:\2023work\AyiShengCompey\publishArr\MyService\MyTaskSix.exe"rem 启动服务
net start "服务名"rem 配置服务自动启动
sc config "服务名" start= auto
pause
//卸载
net stop "服务名"
sc.exe delete "服务名"
pause