在ASP.NET Core中,可以使用IHostedService接口来实现在应用程序启动时执行的后台任务。下面是一个示例:
public class MyBackgroundService : IHostedService
{
private readonly ILogger _logger;
private Timer _timer;
public MyBackgroundService(ILogger logger)
{
_logger = logger;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("MyBackgroundService is starting.");
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("MyBackgroundService is stopping.");
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
private void DoWork(object state)
{
_logger.LogInformation("MyBackgroundService is working.");
}
}
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService();
// ...
}
这样,在应用程序启动时,MyBackgroundService的StartAsync方法将会被调用,开始执行后台任务。可以通过ILogger
注意:需要引入Microsoft.Extensions.Hosting命名空间以使用IHostedService接口。