ASP.NET Core 中有两种类型的后台服务:托管服务(Hosted Service)和工作服务(Worker Service)。它们的主要区别在于实现的接口不同。
以下是一个示例,演示如何实现 IHostedService 接口以创建服务:
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
public class MyHostedService : IHostedService, IDisposable
{
private Timer _timer;
public Task StartAsync(CancellationToken cancellationToken)
{
_timer = new Timer(DoWork, null, TimeSpan.Zero,
TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
private void DoWork(object state)
{
Console.WriteLine("Worker running at: {time}", DateTimeOffset.Now);
}
public Task StopAsync(CancellationToken cancellationToken)
{
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
}
上面的代码创建了一个实现 IHostedService 接口的服务,它使用 Timer 执行一些示例工作。这个服务会在应用程序启动时启动,并每隔 5 秒输出一次消息,直到应用程序关闭时停止。
以下是一个示例,它演示如何实现 IHostedService 接口以创建一个工作服务:
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class MyWorkerService : BackgroundService
{
private readonly ILogger _