<PackageReference Include="Polly" Version="7.0.3" />

TimeoutPolicy<TResult>

public class TimeoutPolicy<TResult> : Policy<TResult>, ITimeoutPolicy<TResult>, ITimeoutPolicy, IsPolicy
A timeout policy which can be applied to delegates returning a value of type TResult.
using System; using System.Threading; using System.Threading.Tasks; namespace Polly.Timeout { public class TimeoutPolicy<TResult> : Policy<TResult>, ITimeoutPolicy<TResult>, ITimeoutPolicy, IsPolicy { private Func<Context, TimeSpan> _timeoutProvider; private TimeoutStrategy _timeoutStrategy; private Action<Context, TimeSpan, Task, Exception> _onTimeout; internal TimeoutPolicy(Func<Context, TimeSpan> timeoutProvider, TimeoutStrategy timeoutStrategy, Action<Context, TimeSpan, Task, Exception> onTimeout) : base((PolicyBuilder<TResult>)null) { if (timeoutProvider == null) throw new ArgumentNullException("timeoutProvider"); _timeoutProvider = timeoutProvider; _timeoutStrategy = timeoutStrategy; if (onTimeout == null) throw new ArgumentNullException("onTimeout"); _onTimeout = onTimeout; } protected override TResult Implementation(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { return TimeoutEngine.Implementation<TResult>(action, context, cancellationToken, _timeoutProvider, _timeoutStrategy, _onTimeout); } } }