Пример фоновой задачи с атрибутом метаданных
Класс реализующий IPRBackgroundTask + PRBackgroundTaskAttribute
В данном примере фоновая задача использует атрибут PRBackgroundTaskAttribute, который реализует интерфейс IPRBackgroundTaskMetadata.
Этот атрибут применяется непосредственно к классу фоновой задачи и служит для описания её метаданных.
С помощью PRBackgroundTaskAttribute задаются основные параметры выполнения задачи, такие как:
идентификатор задачи;
режим выполнения (однократный или периодический);
интервал повторения;
ограничения по количеству выполнений;
лимиты ошибок и другие параметры, влияющие на жизненный цикл задачи.
Использование атрибута позволяет:
декларативно описывать конфигурацию фоновой задачи;
отделить логику выполнения задачи от её настроек;
автоматически извлекать метаданные при инициализации задач без необходимости ручной регистрации.
Таким образом, фоновые задачи могут быть подключены и запущены на основе метаданных, заданных через атрибут, что упрощает расширение и сопровождение системы.
using AspNetExample.Models;
using PRTelegramBot.BackgroundTasks;
using PRTelegramBot.BackgroundTasks.Interfaces;
using PRTelegramBot.Core;
using System.Diagnostics;
namespace AspNetExample.BackgroundTasks
{
[PRBackgroundTask(Constants.EXAMPLE_TASK_DI_ATTRIBUTES_ID, "Test Data base", 1)]
public class ExampleDIAttributeBackgroundTasks : IPRBackgroundTask
{
private readonly AppDbContext db;
private PRBotBase bot;
public Task<bool> CanExecute()
{
return Task.FromResult(true);
}
public Guid Id => Constants.EXAMPLE_DI_TASK_GUID;
public async Task ExecuteAsync(CancellationToken cancellationToken)
{
var users = db.Users.ToList();
Debug.WriteLine($"Users is {users.Count}");
}
public Task Initialize(PRBotBase bot)
{
this.bot = bot;
return Task.CompletedTask;
}
public ExampleDIAttributeBackgroundTasks(AppDbContext db)
{
this.db = db;
}
}
}
Last updated