Đây là một cách mới hơn để biến Ứng dụng Console thành Dịch vụ Windows thành Dịch vụ Công nhân dựa trên .Net Core 3.1 mới nhất .
Nếu bạn tạo Dịch vụ Công nhân từ Visual Studio 2019, nó sẽ cung cấp cho bạn hầu hết mọi thứ bạn cần để tạo Dịch vụ Windows, đây cũng là thứ bạn cần thay đổi thành ứng dụng bảng điều khiển để chuyển đổi sang Dịch vụ Windows.
Dưới đây là những thay đổi bạn cần làm:
Cài đặt các gói NuGet sau
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Thay đổi Program.cs để có một triển khai như dưới đây:
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>();
});
}
}
và thêm Worker.cs nơi bạn sẽ đặt mã sẽ được chạy bởi các hoạt động dịch vụ:
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);
}
}
}
Khi mọi thứ đã sẵn sàng và ứng dụng đã được xây dựng thành công, bạn có thể sử dụng sc.exe để cài đặt ứng dụng bảng điều khiển của bạn như là một Dịch vụ Windows với lệnh sau:
sc.exe create DemoService binpath= "path/to/your/file.exe"