重试操作类

public class Retry
{
    // Methods
    public static void Do(Action action, int timeoutMS = 50, int retryCount = 3)
    {
        Do<object>(delegate {
            action();
            return null;
        }, timeoutMS, retryCount);
    }

    public static ResultType Do<ResultType>(Func<ResultType> action, int timeoutMS = 50, int retryCount = 3)
    {
        List<Exception> innerExceptions = new List<Exception>();
        for (int i = 0; i < retryCount; i++)
        {
            try
            {
                return action();
            }
            catch (Exception exception)
            {
                innerExceptions.Add(exception);
                Thread.Sleep(timeoutMS);
            }
        }
        throw new AggregateException(innerExceptions);
    }
}
时间: 2024-08-25 21:40:37

重试操作类的相关文章

ASP.net如何保证EF操作类线程内唯一

说到线程内唯一,肯定会想到单例模式,但是如果多用户访问网站就会出现问题.ASP.net中有两种方法可以保证EF操作类线程内唯一(目前只会这两种,以后有好的方法再添加): 1.httpcontext(实现原理也是通过数据槽callcontext) 将EF操作类通过键值对方法保存在HttpContext.Current.Items["key"],封装成方法直接调用 2.callcontext public static DbContext CreateDbContext() { DbCon

反射之操作类,方法,属性等

1.操作类 获取类,并通过反射获取一个实例对象 Class class1 = Student.class; Student student = (Student)class1.newInstance();   //默认调用无参数的构造方法 student.setName("heh"); System.out.println(student.getName()); 2.操作构造方法   获取指定参数类型的构造方法,通过此对象创建一个特定参数值的实例对象 Class class1 = St

Android打造属于自己的数据库操作类。

1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要去做增删改查的操作的时候,就得通过getWritableDatabase获取一个SQLiteDataBase然后老老实实去写操作值的put以及查询返回的Cursor处理,其实我们可以搞一个对象来帮我们干这些事情,打造属于你自己的数据库操作类. 2.操作类的初显形 假设现在我们什么都没有,我们要去搞一

使用RedisTemplate的操作类访问Redis(转载)

原文地址:http://www.cnblogs.com/luochengqiuse/p/4641256.html private ValueOperations<K, V> valueOps; private ListOperations<K, V> listOps; private SetOperations<K, V> setOps; private ZSetOperations<K, V> zSetOps; 1. RedisOperations接口说明

php 的mysql操作类

亲自测试,网上其他版本没法用,有很多错误,这是本人亲自测试用的,绝对增删改查都可以. <?php /** * Created by Netbeans. * User: Lugo * Date: 16-7-14 * Version: 1.0.0 * Time: 上午10:50 */ class MysqlHelper { const HOST="localhost"; const DATABASE = "demo"; const ENCODING = "

数字(数学)操作类 Math Random 类 ,大数字操作类

Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法 重点看这个操作,四舍五入 System.out.println(Math.round(-16.5)) ; -16 System.out.println(Math.round(16.5)) ; 17 大于等于0.5进位. Random类 取得随机数的类 java.util 包 产生100之内的随机整数 Random rand = new Random() ; for(int x = 0 ; x < 10 ; x ++

完整的文件和目录操作类

using System; using System.Text; using System.IO; namespace HelloCsharp.Utilities { /// <summary> /// 文件操作类 /// </summary> public static class DirFile { #region 检测指定目录是否存在 /// <summary> /// 检测指定目录是否存在 /// </summary> /// <param n

ecshop的Mysql操作类

摘要,这是直接摘抄的ecshop的mysql操作类:不过他这里的缓存是用的文件缓存,我们如果想直接使用,可以替换成memcache的或者redis的! <?php /** * ECSHOP MYSQL 公用类库 * ============================================================================ * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利. * 网站地址: http://www.ecsho

深入理解Spring Redis的使用 (三)、使用RedisTemplate的操作类访问Redis

上一篇说了RedisTemplate对注解事务的支持,以及提供的序列化器. 事务需要开启enableTransactionSupport,然后使用@transactional注解,里面直接通过回调的connection,就不需要自己进行multi和exec的事务开启提交了.但是通过回调去获取connection,完全没有达到一个模版类的功能.所以这篇我们会讲下几种Operations接口提供的方法. private ValueOperations<K, V> valueOps; private