Files
2025-11-30 08:35:03 +02:00

30 lines
586 B
C#

using System.Threading;
using System.Threading.Tasks;
namespace Needle.Engine
{
public interface ITaskHandle
{
Task Task { get; }
bool Cancel();
}
public readonly struct TaskHandle : ITaskHandle
{
private readonly CancellationTokenSource cancellationTokenSource;
public TaskHandle(Task task, CancellationTokenSource cancellationTokenSource = default)
{
this.cancellationTokenSource = cancellationTokenSource;
Task = task;
}
public Task Task { get; }
public bool Cancel()
{
cancellationTokenSource?.Cancel();
return Task.IsCanceled;
}
}
}