public static void RetryIfIncorrectStatus() { ErrorProneCode errorProneCode = new ErrorProneCode(); #region retryIfIncorrectStatus RetryPolicy <Status> retryPolicy = Policy.HandleResult <Status>(s => s != Status.Success) .Retry(3, (response, retryCount) => { Console.WriteLine($"Received a response of {response.Result}, retrying {retryCount}."); }); Status result = retryPolicy.Execute(() => errorProneCode.GetStatus()); Console.WriteLine($"Received a response of {result}"); #endregion }
public static void WaitAndRetry() { ErrorProneCode errorProneCode = new ErrorProneCode(); #region waitAndRetry RetryPolicy <Status> retryPolicy = Policy.HandleResult <Status>(s => s != Status.Success) .WaitAndRetry(3, sleepDurationProvider: (retryCount) => TimeSpan.FromSeconds(retryCount), // sleep a second longer after each retry onRetry: (response, delay, retryCount, ctx) => { Console.WriteLine($"Received a response of {response.Result}."); Console.WriteLine($"Slept for {delay.Seconds} second(s) before retrying."); }); Status result = retryPolicy.Execute(() => errorProneCode.GetStatus()); Console.WriteLine($"Received a response of {result}."); #endregion }