<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />

AsyncUtils

static class AsyncUtils
using System; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Newtonsoft.Json.Utilities { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal static class AsyncUtils { public static readonly Task<bool> False = Task.FromResult(false); public static readonly Task<bool> True = Task.FromResult(true); internal static readonly Task CompletedTask = Task.Delay(0); internal static Task<bool> ToAsync(this bool value) { if (!value) return False; return True; } [System.Runtime.CompilerServices.NullableContext(2)] public static Task CancelIfRequestedAsync(this CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return null; return cancellationToken.FromCanceled(); } [System.Runtime.CompilerServices.NullableContext(2)] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 2, 1 })] public static Task<T> CancelIfRequestedAsync<T>(this CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return null; return cancellationToken.FromCanceled<T>(); } public static Task FromCanceled(this CancellationToken cancellationToken) { return new Task(delegate { }, cancellationToken); } public static Task<T> FromCanceled<[System.Runtime.CompilerServices.Nullable(2)] T>(this CancellationToken cancellationToken) { return new Task<T>((Func<T>)(() => default(T)), cancellationToken); } public static Task WriteAsync(this TextWriter writer, char value, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return writer.WriteAsync(value); return cancellationToken.FromCanceled(); } public static Task WriteAsync(this TextWriter writer, [System.Runtime.CompilerServices.Nullable(2)] string value, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return writer.WriteAsync(value); return cancellationToken.FromCanceled(); } public static Task WriteAsync(this TextWriter writer, char[] value, int start, int count, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return writer.WriteAsync(value, start, count); return cancellationToken.FromCanceled(); } public static Task<int> ReadAsync(this TextReader reader, char[] buffer, int index, int count, CancellationToken cancellationToken) { if (!cancellationToken.IsCancellationRequested) return reader.ReadAsync(buffer, index, count); return cancellationToken.FromCanceled<int>(); } public static bool IsCompletedSuccessfully(this Task task) { return task.Status == TaskStatus.RanToCompletion; } } }