zoukankan      html  css  js  c++  java
  • 封装一个错误重试类



    /// <summary>
    /// 错误重试处理
    /// </summary>
    public static class RetryHandle
    {
    /// <summary>
    /// 重试
    /// </summary>
    /// <param name="count">重试次数</param>
    /// <param name="actionFunc">执行方法</param>
    public static T Retry<T>(int count, Func<int,RetryMessage<T>> actionFunc = null)
      {
           if (actionFunc == nullreturn default(T);
           var times = 1;
           RetryMessage<T> ret;
           do
             {
               ret = actionFunc(times);
               if (ret.Success) break;
                times++;
             } while (times <= count);
           return ret.Data;
       }


     /// <summary>
            /// 隔一段时间重试调用一次
            /// </summary>
            /// <param name="sleepDurations"></param>
            /// <param name="action"></param>
            public static void WaitAndRetry(IEnumerable<TimeSpan> sleepDurations, Action<TimeSpanint> action)
            {
                var intento = 1;
                sleepDurations.Each(timeSpan =>
                {
                    System.Threading.Thread.Sleep(timeSpan.Seconds * 1000);
                    action(timeSpan, intento);
                    intento++;
                });
            }  
    }
    /// <summary>
    /// 
    /// </summary>
    public class RetryMessage<T>
    {
            /// <summary>
            /// 
            /// </summary> 
            public bool Success { setget; }
            /// <summary>
            /// 
            /// </summary>
            public T Data { setget; }
    }


    //调用示例 
    var ret = RetryHandle.Retry(3, () =>
     {
       var list = GetList();
       return new RetryMessage<List<HO_PESbkv>>
        {
         Success = list != null && list.Any(),
         Data = list
        };
    }); 
  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/qingyunoo/p/7615360.html
Copyright © 2011-2022 走看看