TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
НеСерьезный шарпист

5 Jan 2025, 18:32

Открыть в Telegram Поделиться Пожаловаться

Помимо изменений в IHostedService одним из главных нововведений в Microsoft.Extensions.Hosting в .NET 8 стало добавление нового интерфейса IHostedLifecycleService, который значительно упрощает управление жизненным циклом служб.

Данный интерфейс интерфейс расширяет IHostedService, добавляя методы для событий жизненного цикла, которые происходят до или после существующих StartAsync и StopAsync:
public partial interface IHostedLifecycleService : Microsoft.Extensions.Hosting.IHostedService
{
Task StartingAsync(CancellationToken cancellationToken);
Task StartedAsync(CancellationToken cancellationToken);
Task StoppingAsync(CancellationToken cancellationToken);
Task StoppedAsync(CancellationToken cancellationToken);
}

Метод StartingAsync для всех зарегистрированных служб будет запущен прежде, чем будет вызван StartAsync. Это может использоваться для выполнения некоторых проверок перед запуском приложения или инициализацией, например для проверки лицензий, обновлении кешей, применение миграций бд, инициализацию зависимостей (синглтонов). Это позволяет нам, если что-то пойдет не так, потенциально остановить приложение до того, как какие-либо размещенные службы начнут выполнять свою основную рабочую нагрузку.

StartedAsync будет вызываться после завершения всех методов StartAsync для зарегистрированных размещенных служб. Это может использоваться для проверки состояния или условий приложения непосредственно перед тем, как отметить приложение как успешно запущенное.

StoppingAsync может использоваться для сохранения состояния перед завершением, а StoppedAsync - для информирования других зависимостей о том, что служба более не доступна.
public class DatabaseLifecycleService : IHostedLifecycleService
{
public async Task StartingAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StartingAsync: Проверка конфигурации...");
await Task.Delay(500, cancellationToken);
}

public async Task StartAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StartAsync: Подключение к базе данных...");
await Task.Delay(500, cancellationToken);
}

public async Task StartedAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StartedAsync: Приложение готово!");
}

public async Task StoppingAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StoppingAsync: Закрытие соединений...");
await Task.Delay(500, cancellationToken);
}

public async Task StopAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StopAsync: Служба завершает работу...");
}

public async Task StoppedAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StoppedAsync: Соединения закрыты. Служба завершена.");
}
}

2.2k 0 15 3 26
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot