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;
}
}