Aqui está uma maneira mais recente de como transformar um aplicativo de console em um serviço do Windows como um serviço de trabalho com base no mais recente .Net Core 3.1 .
Se você criar um Serviço de Trabalho do Visual Studio 2019, ele fornecerá quase tudo o que você precisa para criar um Serviço do Windows pronto para o uso, que também é o que você precisa alterar para o aplicativo do console para convertê-lo em um Serviço do Windows.
Aqui estão as alterações que você precisa fazer:
Instale os seguintes pacotes NuGet
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Altere Program.cs para ter uma implementação como abaixo:
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>();
});
}
}
e adicione Worker.cs onde você colocará o código que será executado pelas operações de serviço:
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);
}
}
}
Quando tudo estiver pronto e o aplicativo tiver sido construído com êxito, você poderá usar o sc.exe para instalar o aplicativo do console exe como um Serviço do Windows com o seguinte comando:
sc.exe create DemoService binpath= "path/to/your/file.exe"