Если я правильно понимаю вашу проблему, вы можете сделать это:
public class Controller
{
private readonly IServiceProvider _serviceProdiver;
public Controller(IServiceProvider serviceProdiver)
{
_serviceProvider = serviceProvider;
}
public async Task RunAllBackgroundServices()
{
var allBackgroundServices = _serviceProvider.GetServices<IHostedService>();
foreach(var hostedService in allBackgroundServices)
{
await hostedService.StartAsync(CancellationToken.None);
}
}
}
С помощью DI вы получите все реализации IHostedService
и запустите их.