Как ввести ссылку на конкретный IhostedService в другой (зависимый) iHostedService?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как ввести ссылку на конкретный IhostedService в другой (зависимый) iHostedService?

Сообщение Anonymous »

У меня есть приложение для консоли .net 4.7.2, которое использует Generic Host .net и имеет 2 фоновых служб. Один из них (зависимый) должен начать свою работу только после того, как другой (база) завершил свою инициализацию (которая может занять несколько секунд). < /P>
На данный момент у меня есть следующий код: < /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();
}
Но конструкция для получения Basebackgroundservice выглядит слишком сложной. Но это также выглядит как избыток для такой простой цели.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -dependant
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Диспетчер IHostedService C# .net6
    Гость » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Гость
  • Реализация IHostedService с динамическим параметром
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Реализация IHostedService с динамическим параметром
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Как запускать и останавливать задачи в IHostedService
    Anonymous » » в форуме C#
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как правильно использовать универсальный хост .Net Core без IHostedService?
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»