У меня есть. NET Ядро консоль приложение, содержащее две независимые задачи, которые должны выполняться параллельно в течение всего срока службы приложения. Я думал использовать BackgroundService :
class BackgroundTaskOne : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
// do long running task for the entire life-time of application
while(true)
{
// do work one
}
}
catch (Exception e)
{
// log
}
}
return Task.CompletedTask;
}
}
class BackgroundTaskTwo : BackgroundService
{
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
try
{
// do long running task for the entire life-time of application
while(true)
{
// do work two
}
}
catch (Exception e)
{
// log
}
}
return Task.CompletedTask;
}
}
И зарегистрировать их так:
services.AddHostedService<BackgroundTaskOne>();
services.AddHostedService<BackgroundTaskTwo>();
Но они будут запускаться в порядке . Итак, у меня есть два вопроса:
- Есть ли способ заставить эти два работать параллельно?
- Существуют ли другие альтернативы для запуска двух длительных фоновых процессов в. NET Ядро параллельно?