我已经在一个ASP.NET Core 2.1应用程序中实现了BackgroundService:
public class MyBackgroundService : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (true)
{
await DoSomethingAsync();
await Task.Delay(10 * 1000);
}
return Task.CompletedTask;
}
}
我已经在我的ConfigureServices()
方法中进行了注册:
services.AddSingleton<MyBackgroundService>();
我目前(勉强地)通过在Configure()
方法内调用(而不是等待)StartAsync()
方法来开始它:
app.ApplicationServices.GetService<SummaryCache>().StartAsync(new CancellationToken());
如何启动长时间运行的服务的最佳实践方法是什么?
services.AddSingleton<MyBackgroundService>();
之后,它会在应用程序启动时自动启动,无需从您自己的代码中显式调用StartAsync()
。 - Edward