Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/GISTech/GISDataDownloader/TaskCancellationExtension.cs
2026-03-04 09:37:33 +08:00

34 lines
1.3 KiB
C#

using System.Threading;
using System.Threading.Tasks;
namespace GISTech.GISDataDownloader
{
public static class TaskCancellationExtension
{
public static Task WhenCanceled(this CancellationToken cancellationToken)
{
TaskCompletionSource<bool> taskCompletionSource = new TaskCompletionSource<bool>();
cancellationToken.Register(delegate(object s)
{
((TaskCompletionSource<bool>)s).SetResult(result: true);
}, taskCompletionSource);
return taskCompletionSource.Task;
}
public static Task<T> CancelWith<T>(this Task<T> task, CancellationToken cancellationToken, bool swallowCancellationException = false)
{
return TaskCancellationInternals.CancelWithInternal(task, cancellationToken, swallowCancellationException);
}
public static Task<T> CancelWith<T>(this Task<T> task, CancellationToken cancellationToken, string message, bool swallowCancellationException = false)
{
return TaskCancellationInternals.CancelWithInternal(task, cancellationToken, message, swallowCancellationException);
}
public static Task CancelWith(this Task task, CancellationToken cancellationToken, bool swallowCancellationException = false)
{
return TaskCancellationInternals.CancelWithInternal(task, cancellationToken, swallowCancellationException);
}
}
}