using System; namespace AsbCloudInfrastructure.Background; /// /// Класс периодической работы. /// public class WorkPeriodic { public Work Work { get; } /// /// Период выполнения задачи /// public TimeSpan Period { get; set; } /// /// Время следующего запуска /// public DateTime NextStart { get { var lastStart = Work.LastComplete?.Start ?? DateTime.MinValue; if (Work.LastError?.Start > lastStart) lastStart = Work.LastError.Start; return lastStart + Period; } } /// /// Класс периодической работы /// /// Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки /// Делегат работы /// Период выполнения задачи public WorkPeriodic(Work work, TimeSpan period) { Work = work; Period = period; } }