Voici une nouvelle façon de transformer une application console en service Windows en tant que service de travail basé sur le dernier .Net Core 3.1 .
Si vous créez un service de travail à partir de Visual Studio 2019, il vous donnera presque tout ce dont vous avez besoin pour créer un service Windows prêt à l'emploi, ce qui est également ce que vous devez modifier dans l'application console afin de le convertir en service Windows.
Voici les changements que vous devez faire:
Installez les packages NuGet suivants
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Changez Program.cs pour avoir une implémentation comme ci-dessous:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace ConsoleApp
{
class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).UseWindowsService().Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
}
et ajoutez Worker.cs où vous mettrez le code qui sera exécuté par les opérations de service:
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp
{
public class Worker : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
//do some operation
}
public override Task StartAsync(CancellationToken cancellationToken)
{
return base.StartAsync(cancellationToken);
}
public override Task StopAsync(CancellationToken cancellationToken)
{
return base.StopAsync(cancellationToken);
}
}
}
Lorsque tout est prêt et que l'application a été créée avec succès, vous pouvez utiliser sc.exe pour installer votre exe d'application console en tant que service Windows avec la commande suivante:
sc.exe create DemoService binpath= "path/to/your/file.exe"