Пример фоновой задачи с реализацией интерфейса метаданных

Класс реализующий IPRBackgroundTask и IPRBackgroundTaskMetadata

В данном примере фоновая задача реализует сразу два интерфейса — IPRBackgroundTask и IPRBackgroundTaskMetadata, объединяя в одном классе как логику выполнения задачи, так и её метаданные.

Интерфейс IPRBackgroundTask отвечает за поведение задачи и определяет:

  • метод Initialize — инициализацию задачи с привязкой к экземпляру бота;

  • метод CanExecute — проверку возможности выполнения задачи;

  • метод ExecuteAsync — основную логику выполнения фоновой задачи.

Интерфейс IPRBackgroundTaskMetadata используется для описания параметров выполнения задачи и содержит:

  • Id — уникальный идентификатор фоновой задачи;

  • Name — имя задачи;

  • InitialDelaySeconds — задержку перед первым запуском;

  • RepeatSeconds — интервал повторного выполнения;

  • BotIds — список идентификаторов ботов, для которых задача разрешена (пустой список означает выполнение для всех ботов);

  • MaxErrorAttempts — максимальное количество допустимых ошибок выполнения;

  • MaxRepeatCount — максимальное количество повторений задачи.

В данном примере задача:

  • запускается с задержкой в 1 секунду;

  • выполняется каждую секунду без ограничения по количеству повторов;

  • не имеет ограничения по количеству ошибок выполнения;

  • доступна для всех ботов.

Такой подход позволяет отказаться от использования атрибутов и задавать метаданные напрямую в классе фоновой задачи, что может быть удобно для динамических или конфигурируемых сценариев выполнения.

Last updated