forked from ddrilling/AsbCloudServer
70 lines
2.5 KiB
C#
70 lines
2.5 KiB
C#
|
using System;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace AsbCloudInfrastructure.Background
|
|||
|
{
|
|||
|
#nullable enable
|
|||
|
/// <summary>
|
|||
|
/// Класс разовой работы.
|
|||
|
/// Разовая работа приоритетнее периодической.
|
|||
|
/// </summary>
|
|||
|
public class WorkBase
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Идентификатор работы. Должен быть уникальным. Используется в логах и передается в колбэки.
|
|||
|
/// </summary>
|
|||
|
public string Id { get; private set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Делегат работы.
|
|||
|
/// <para>
|
|||
|
/// Параметры:
|
|||
|
/// <list type="number">
|
|||
|
/// <item>
|
|||
|
/// <term>string</term>
|
|||
|
/// <description>Id Идентификатор работы</description>
|
|||
|
/// </item>
|
|||
|
/// <item>
|
|||
|
/// <term>IServiceProvider</term>
|
|||
|
/// <description>Поставщик сервисов</description>
|
|||
|
/// </item>
|
|||
|
/// <item>
|
|||
|
/// <term>CancellationToken</term>
|
|||
|
/// <description>Токен отмены задачи</description>
|
|||
|
/// </item>
|
|||
|
/// </list>
|
|||
|
/// </para>
|
|||
|
/// </summary>
|
|||
|
internal Func<string, IServiceProvider, CancellationToken, Task> ActionAsync { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Делегат обработки ошибки.
|
|||
|
/// Не должен выполняться долго.
|
|||
|
/// </summary>
|
|||
|
public Func<string, Exception, CancellationToken, Task>? OnErrorAsync { get; set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// максимально допустимое время выполнения работы
|
|||
|
/// </summary>
|
|||
|
public TimeSpan Timeout { get; set; } = TimeSpan.FromMinutes(1);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Фактическое время успешного выполнения работы
|
|||
|
/// </summary>
|
|||
|
public TimeSpan? ExecutionTime { get; internal set; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Время последнего запуска
|
|||
|
/// </summary>
|
|||
|
public DateTime LastStart { get; set; }
|
|||
|
|
|||
|
public WorkBase(string id, Func<string, IServiceProvider, CancellationToken, Task> actionAsync)
|
|||
|
{
|
|||
|
Id = id;
|
|||
|
ActionAsync = actionAsync;
|
|||
|
}
|
|||
|
}
|
|||
|
#nullable disable
|
|||
|
}
|