На данный момент у меня есть следующий код: < /p>
Код: Выделить всё
internal class BaseBackgroundService : BackgroundService
{
internal bool Initialized;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Console.WriteLine("BaseBackgroundService started");
await Task.Delay(TimeSpan.FromSeconds(2), stoppingToken);
Initialized = true;
Console.WriteLine("BaseBackgroundService initialized");
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Message from BaseBackgroundService");
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
}
}
}
internal class DependentBackgroundService(IServiceProvider serviceProvider) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var baseBackgroundService = serviceProvider
.GetServices()
.OfType()
.Single();
while (!baseBackgroundService.Initialized)
{
await Task.Delay(100, stoppingToken);
Console.WriteLine("Waiting for BaseBackgroundService to initialize");
}
while (!stoppingToken.IsCancellationRequested)
{
Console.WriteLine("Message from DependantBackgroundService");
await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken);
}
}
}
static void Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
services
.AddHostedService()
.AddHostedService();
})
.Build();
host.Run();
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -dependant