答案:使用.NET 6 Worker Service模板创建Windows服务,通过添加Microsoft.Extensions.Hosting.WindowsServices包并配置宿主模型,实现后台任务运行;部署时用sc命令安装并设置开机自启,开发阶段可通过控制台调试,日志建议输出到文件或事件日志。

创建一个 Windows 服务在 C# 中并不复杂,但需要理解其运行机制和部署流程。Windows 服务是在后台运行的长期进程,适合执行定时任务、监控系统或托管长时间运行的服务逻辑。下面是一个完整的创建与部署指南。
打开 Visual Studio,按照以下步骤新建项目:
如果你使用的是 .NET 6 或更高版本,建议选择“Worker Service”模板,它更适合现代 Windows 服务开发,并支持跨平台。
在 Program.cs 中,使用内置的宿主模型来注册后台服务:
builder.Services.AddHostedService<Worker>();
在 Worker.cs 文件中实现你的业务逻辑:
public class Worker : BackgroundService
{
private readonly ILogger
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);
await Task.Delay(1000, stoppingToken); // 每秒执行一次
}
} }
这个 Worker 类继承自 BackgroundService,会在服务启动时自动调用 ExecuteAsync 方法。
要让 .NET 应用作为 Windows 服务运行,需要添加 NuGet 包并修改宿主配置。
修改 Program.cs,启用 Windows 服务支持:
var isService = !string.IsNullOrEmpty(Environment.GetCommandLineArgs().FirstOrDefault(arg => arg.ToLower() == "--windows-service"));
var builder = Host.CreateApplicationBuilder(args);
if (isService)
{
builder.Services.AddWindowsService(options =>
{
options.ServiceName = "MySampleWinService";
});
}
else
{
builder.Services.AddConsoleLifetime();
}
builder.Services.AddHostedService
var host = builder.Build();
await host.RunAsync();
这样,当应用以服务方式运行时,会自动识别并注册为 Windows 服务。
完成开发后,发布项目并部署为服务:
sc create MySampleWinService binPath="C:\MyServices\MyWinService\MyWinService.exe --windows-service" start=auto
说明:
启动服务:
sc start MySampleWinService查看服务状态:
sc query MySampleWinService卸载服务(如需):
sc delete MySampleWinServiceWindows 服务无法直接调试。建议:
若需写入 Windows 事件日志,可添加:
builder.Logging.AddEventLog();基本上就这些。只要结构清晰,.NET 的宿主模型让 Windows 服务变得简单可控。
以上就是C# 怎么创建一个 Windows 服务_C# Windows 服务创建与部署指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号