ASP.NET Core 中提供了托管服务 (hosted service) 来供我们编写运行在后台的代码。
只要继承抽象类 BackgroundService ,并实现方法 ExecuteAsync() ,如果有需要释放的资源,可以写在Dispose()方法中
一、除了日志外不需要注入其它服务的后台服务
public class DemoBgService : BackgroundService { private readonly ILogger<DemoBgService> _logger; public DemoBgService(ILogger<DemoBgService> logger) { _logger = logger; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await Task.Delay(5000); string s = await File.ReadAllTextAsync(@"e://1.txt"); await Task.Delay(2000); _logger.LogInformation(s); } }
注册服务
services.AddHostedService<DemoBgService>();
二、需要注入其它服务的后台服务
因为注入的后台服务是单例,所以不能直接在构造函数中注入其它服务
标签:Task,服务,托管,BackgroundService,后台,logger,await From: https://www.cnblogs.com/friend/p/16759724.html