BackgroundService是定义了一个后台服务的基类,可以在控制台应用程序或ASP.NET Core中用作宿主服务。它使用了一种支持多种运行时的服务生命周期。该类在.NET 3.0及以上版本中提供。
BackgroundService类包含一个ExecuteAsync方法,用于实现服务的主要逻辑。服务可以在启动时异步地进行初始化,并在终止时处理资源清理操作,因此需要配合使用IServiceLifetime接口。IServiceLifetime包括三个生命周期方法:StartAsync,StopAsync和DisposeAsync。
下面是一个简单的示例代码,演示了如何实现一个后台服务,并使用IServiceLifetime处理服务生命周期:
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.DependencyInjection; using System.Threading; using System.Threading.Tasks;
public class MyBackgroundService : BackgroundService { private readonly ILogger _logger;
public MyBackgroundService(ILogger logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("Background Service running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
public class Program
{
public static async Task Main(string[] args)
{
var host = new HostBuilder()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService
await host.RunAsync();
}
}