using System; using System.Threading; using System.Threading.Tasks; namespace AsbCloudInfrastructure.Background { /// <summary> /// Класс периодической работы. /// </summary> public class WorkPeriodic : WorkBase { /// <summary> /// Период выполнения задачи /// </summary> public TimeSpan Period { get; set; } /// <summary> /// Время следующего запуска /// </summary> public DateTime NextStart => LastStart + Period; /// <summary> /// Класс периодической работы /// </summary> /// <param name="id">Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки</param> /// <param name="actionAsync">Делегат работы</param> /// <param name="period">Период выполнения задачи</param> public WorkPeriodic(string id, Func<string, IServiceProvider, CancellationToken, Task> actionAsync, TimeSpan period) : base(id, actionAsync) { Period = period; } } }