Пример #1
0
        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
        }
Пример #2
0
        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
        }