public static void Execute(Action method, IRetryPolicy retryPolicy, IBackOffScheme backOffScheme, int numRetries = Constants.LoadBalancingHelperNumRetriesDefault) { int retryCount = 0; bool requestSuccess = false; while ((!requestSuccess) && (retryCount < numRetries)) { try { method(); requestSuccess = true; } catch (Exception ex) { Trace.TraceError("\tAttempt {0} failed with exception {1} - {2}", retryCount, ex.GetType(), ex.Message); retryCount++; if ((retryCount < numRetries) && (retryPolicy.ShouldRetryAttempt(ex))) { var sleepInterval = backOffScheme.GetRetryInterval(retryCount); if (sleepInterval != default(TimeSpan)) { Trace.TraceInformation("\tWill retry after {0} milliseconds......", sleepInterval.TotalMilliseconds); Thread.Sleep(sleepInterval); } } else { throw; } } } }
public static void Execute(Action method, IRetryPolicy retryPolicy, IBackOffScheme backOffScheme, int numRetries = Constants.LoadBalancingHelperNumRetriesDefault) { int retryCount = 0; bool requestSuccess = false; while ((!requestSuccess) && (retryCount < numRetries)) { try { method(); requestSuccess = true; } catch (Exception ex) { Trace.TraceError("\tAttempt {0} failed with exception {1} - {2}", retryCount, ex.GetType(), ex.Message); retryCount++; if ((retryCount < numRetries) && (retryPolicy.ShouldRetryAttempt(ex))) { var sleepInterval = backOffScheme.GetRetryInterval(retryCount); if (sleepInterval != default (TimeSpan)) { Trace.TraceInformation("\tWill retry after {0} milliseconds......", sleepInterval.TotalMilliseconds); Thread.Sleep(sleepInterval); } } else { throw; } } } }