Berikut adalah cara yang lebih baru tentang cara mengubah Aplikasi Konsol ke Layanan Windows sebagai Layanan Pekerja berdasarkan .Net Core 3.1 terbaru .
Jika Anda membuat Layanan Pekerja dari Visual Studio 2019 itu akan memberi Anda hampir semua yang Anda butuhkan untuk membuat Layanan Windows di luar kotak, yang juga merupakan apa yang Anda perlu ubah ke aplikasi konsol untuk mengubahnya menjadi Layanan Windows.
Berikut adalah perubahan yang perlu Anda lakukan:
Instal paket NuGet berikut
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Ubah Program.cs untuk memiliki implementasi seperti di bawah ini:
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>();
});
}
}
dan tambahkan Worker.cs di mana Anda akan meletakkan kode yang akan dijalankan oleh operasi layanan:
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);
}
}
}
Ketika semuanya sudah siap, dan aplikasi telah berhasil dibangun, Anda dapat menggunakan sc.exe untuk menginstal exe aplikasi konsol Anda sebagai Layanan Windows dengan perintah berikut:
sc.exe create DemoService binpath= "path/to/your/file.exe"