DD.WellWorkover.Cloud/AsbCloudInfrastructure/Background/WorkPeriodic.cs

46 lines
1.5 KiB
C#
Raw Normal View History

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>
2023-10-08 19:45:21 +05:00
public DateTime NextStart
{
get
{
var lastStart = LastComplete?.Start ?? DateTime.MinValue;
if (LastError?.Start > lastStart)
lastStart = LastError.Start;
return lastStart + Period;
}
}
/// <summary>
/// Класс периодической работы
/// </summary>
/// <param name="id">Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки</param>
/// <param name="actionAsync">Делегат работы</param>
/// <param name="period">Период выполнения задачи</param>
2023-10-08 19:45:21 +05:00
public WorkPeriodic(string id, Func<string, IServiceProvider, Action<string, double?>, CancellationToken, Task> actionAsync, TimeSpan period)
: base(id, actionAsync)
{
Period = period;
}
}
}