Using this class, taken from http://kb.zillionics.com/c-retry-pattern/ as my note
class Retry { /// <summary> /// Retry calling of a method if it fails /// </summary> /// <typeparam name="T">Return data type</typeparam> /// <param name="method">Method</param> /// <param name="numRetries">Number of Retries</param> /// <param name="secondsToWaitBeforeRetry"></param> /// <returns>T</returns> public static T RetryMethod<T>(Func<T> method, int numRetries, int secondsToWaitBeforeRetry) { if (method == null) throw new ArgumentNullException("method"); T retval = default(T); do { try { retval = method(); return retval; } catch (Exception ex) { //Logger.Log(ex.ToString()); //Logger.Log("Retrying... Count down: " + numRetries); if (numRetries <= 0) throw; Thread.Sleep(secondsToWaitBeforeRetry * 1000); } } while (numRetries-- > 0); return retval; } /// <summary> /// Retry calling of an Action if it fails /// </summary> /// <typeparam name="T">Return data type</typeparam> /// <param name="method">Method</param> /// <param name="numRetries">Number of Retries</param> /// <param name="secondsToWaitBeforeRetry"></param> public static void RetryAction(Action action, int numRetries, int secondsToWaitBeforeRetry) { if (action == null) throw new ArgumentNullException("action"); do { try { action(); return; } catch (Exception ex) { //Logger.Log(ex.ToString()); //Logger.Log("Retrying... Count down: " + numRetries); if (numRetries <= 0) throw; else Thread.Sleep(secondsToWaitBeforeRetry * 1000); } } while (numRetries-- > 0); } }How to using it
string ret = Retry.RetryMethod(() => { string abac = ambildataimdb(line, c, lines); return abac; }, 3, 5);Or VOID
Retry.RetryAction(() => { ambildataimdb(line, c, lines); }, 3, 5);