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 readonly TimeoutStrategy _timeoutStrategy;
private readonly Func<Context, TimeSpan> _timeoutProvider;
private readonly 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);
}
}
}