<PackageReference Include="Polly.Core" Version="8.4.1" />

TimeProviderExtensions

static class TimeProviderExtensions
Extensions for TimeProvider used by resilience strategies.
using System; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Polly.Utils { internal static class TimeProviderExtensions { [System.Runtime.CompilerServices.NullableContext(1)] public static Task DelayAsync(this TimeProvider timeProvider, TimeSpan delay, ResilienceContext context) { Guard.NotNull(timeProvider, "timeProvider"); Guard.NotNull(context, "context"); context.CancellationToken.ThrowIfCancellationRequested(); if (delay == TimeSpan.MaxValue) delay = System.Threading.Timeout.InfiniteTimeSpan; if (context.IsSynchronous) { timeProvider.Delay(delay, context.CancellationToken).GetAwaiter().GetResult(); return Task.CompletedTask; } return timeProvider.Delay(delay, context.CancellationToken); } } }