要在ASP.NET Core中使用BackgroundService挂起应用程序,您可以按照以下步骤进行操作:
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
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("MyBackgroundService is running.");
// 执行需要长时间运行的操作
await Task.Delay(TimeSpan.FromSeconds(5), stoppingToken);
}
}
public override async Task StopAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("MyBackgroundService is stopping.");
// 执行清理操作
await base.StopAsync(stoppingToken);
}
}
public void ConfigureServices(IServiceCollection services)
{
// 省略其他代码
services.AddHostedService();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
});
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
当应用程序启动时,MyBackgroundService将在后台运行,并且ASP.NET Core应用程序将一直处于运行状态,直到调用Shutdown方法或关闭应用程序。
注意:务必在服务的ExecuteAsync方法中添加适当的逻辑来处理长时间运行的操作,并且在StopAsync方法中执行清理操作。