refactor!: Use Func<Task> for scheduled tasks

This commit is contained in:
Mira 2023-08-06 19:13:35 +02:00
parent 647d7c4a1c
commit bc8eb1ac0d
Signed by untrusted user who does not match committer: Xorog
GPG key ID: 983798ED9C3E7C36
5 changed files with 98 additions and 66 deletions

35
Entities/ScheduledTask.cs Normal file
View file

@ -0,0 +1,35 @@
namespace Xorog.UniversalExtensions.Entities;
public class ScheduledTask
{
internal ScheduledTask()
{
this.Uid = Guid.NewGuid().ToString();
}
/// <summary>
/// The unique identifier of this task.
/// </summary>
public string Uid { get; internal set; }
/// <summary>
/// The custom data asscociated with this task.
/// </summary>
public object? CustomData { get; internal set; }
/// <summary>
/// The time this task will run.
/// </summary>
public DateTime? RunTime { get; internal set; }
/// <summary>
/// The <see cref="CancellationTokenSource"/> to prematurely dequeue this task.
/// </summary>
internal CancellationTokenSource? TokenSource { get; set; } = new();
/// <summary>
/// Delete this task.
/// </summary>
public void Delete() =>
ScheduledTaskExtensions.DeleteScheduledTask(Uid);
}