using System; using System.Threading; using System.Threading.Tasks; namespace AsbCloudApp.Services { /// <summary> /// Сервис выстраивает очередь из фоновых задач. Ограничивает количество одновременно выполняющихся задач. /// </summary> public interface IBackgroundWorkerService { /// <summary> /// Проверка, есть ли задача в очереди /// </summary> /// <param name="id">идентификатор задачи</param> /// <returns></returns> bool Contains(string id); /// <summary> /// Добавляет в очередь задач новую задачу /// </summary> /// <param name="id">идентификатор задачи</param> /// <param name="func">делегат</param> /// <returns>id задачи в очереди</returns> string Enqueue(string id, Func<string, CancellationToken, Task> func); /// <summary> /// Добавляет в очередь задач новую задачу /// </summary> /// <param name="func"></param> /// <returns></returns> string Enqueue(Func<string, CancellationToken, Task> func); /// <summary> /// Добавляет в очередь задач новую задачу /// </summary> /// <param name="id">идентификатор задачи</param> /// <param name="func"></param> /// <param name="onError"></param> /// <returns></returns> string Enqueue(string id, Func<string, CancellationToken, Task> func, Func<string, Exception, CancellationToken, Task> onError); /// <summary> /// Пробуем удалить задачу по идентификатору /// </summary> /// <param name="id"></param> /// <returns></returns> bool TryRemove(string id); } }