博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#异常重试通用类Retry
阅读量:6601 次
发布时间:2019-06-24

本文共 4385 字,大约阅读时间需要 14 分钟。

//Retry机制    public static class Retry    {        ///         /// 重试零个参数无返回值的方法        ///         /// 执行方法方法        /// 重试间隔        /// 重试次数        public static void Execute(Action action, TimeSpan retryInterval, int retryCount = 3)        {            Execute(() =>            {                action();                return null;            }, retryInterval, retryCount);        }        ///         /// 重试一个参数无返回值的方法        ///         /// 
参数类型1
/// 执行方法方法 /// 参数1 /// 重试间隔 /// 重试次数 public static void Execute
(Action
action, T1 arg1, TimeSpan retryInterval, int retryCount = 3) { Execute
((x1) => { action(arg1); return null; }, arg1, retryInterval, retryCount); } ///
/// 重试两个参数无返回值的方法 /// ///
参数类型1
///
参数类型2
///
执行方法方法 ///
参数1 ///
参数2 ///
重试间隔 ///
重试次数 public static void Execute
(Action
action, T1 arg1, T2 arg2, TimeSpan retryInterval, int retryCount = 3) { Execute
((x1, x2) => { action(arg1, arg2); return null; }, arg1, arg2, retryInterval, retryCount); } ///
/// 重试三个参数无返回值的方法 /// ///
参数类型1
///
参数类型2
///
参数类型3
///
执行方法方法 ///
参数1 ///
参数2 ///
参数3 ///
重试间隔 ///
重试次数 public static void Execute
(Action
action, T1 arg1, T2 arg2, T3 arg3, TimeSpan retryInterval, int retryCount = 3) { Execute
((x1, x2, x3) => { action(arg1, arg2, arg3); return null; }, arg1, arg2, arg3, retryInterval, retryCount); } ///
/// 重试四个参数无返回值的方法 /// ///
参数类型1
///
参数类型2
///
参数类型3
///
参数类型4
///
执行方法方法 ///
参数1 ///
参数2 ///
参数3 ///
参数4 ///
重试间隔 ///
重试次数 public static void Execute
(Action
action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, TimeSpan retryInterval, int retryCount = 3) { Execute
((x1, x2, x3, x4) => { action(arg1, arg2, arg3, arg4); return null; }, arg1, arg2, arg3, arg4, retryInterval, retryCount); } ///
/// 重试零个参数带返回值 /// ///
返回类型
///
执行的方法 ///
重试间隔 ///
重试次数 ///
返回类型T
public static T Execute
(Func
func, TimeSpan retryInterval, int retryCount = 3) { var exceptions = new List
(); for (int retry = 0; retry < retryCount; retry++) { try { return func(); } catch (Exception ex) { exceptions.Add(ex); Thread.Sleep(retryInterval); } } throw new AggregateException(exceptions); } ///
/// 重试一个参数带返回值 /// ///
参数类型1
///
返回类型
///
执行的方法 ///
参数1 ///
重试间隔 ///
重试次数 ///
返回类型T
public static T Execute
(Func
func, T1 arg1, TimeSpan retryInterval, int retryCount = 3) { var exceptions = new List
(); for (int retry = 0; retry < retryCount; retry++) { try { return func(arg1); } catch (Exception ex) { exceptions.Add(ex); Thread.Sleep(retryInterval); } } throw new AggregateException(exceptions); } ///
/// 重试两个参数带返回值 /// ///
参数类型1
///
参数类型2
///
返回类型
///
执行的方法 ///
参数1 ///
参数2 ///
重试间隔 ///
重试次数 ///
返回类型T
public static T Execute
(Func
func, T1 arg1, T2 arg2, TimeSpan retryInterval, int retryCount = 3) { var exceptions = new List
(); for (int retry = 0; retry < retryCount; retry++) { try { return func(arg1, arg2); } catch (Exception ex) { exceptions.Add(ex); Thread.Sleep(retryInterval); } } throw new AggregateException(exceptions); } ///
/// 重试三个参数带返回值 /// ///
参数类型1
///
参数类型2
///
参数类型3
///
返回类型
///
执行的方法 ///
参数1 ///
参数2 ///
参数3 ///
重试间隔 ///
重试次数 ///
返回类型T
public static T Execute
(Func
func, T1 arg1, T2 arg2, T3 arg3, TimeSpan retryInterval, int retryCount = 3) { var exceptions = new List
(); for (int retry = 0; retry < retryCount; retry++) { try { return func(arg1, arg2, arg3); } catch (Exception ex) { exceptions.Add(ex); Thread.Sleep(retryInterval); } } throw new AggregateException(exceptions); } ///
/// 重试四个参数带返回值 /// ///
参数类型1
///
参数类型2
///
参数类型3
///
参数类型4
///
返回类型
///
执行的方法 ///
参数1 ///
参数2 ///
参数3 ///
参数4 ///
重试间隔 ///
重试次数 ///
返回类型T
public static T Execute
(Func
func, T1 arg1, T2 arg2, T3 arg3, T4 arg4, TimeSpan retryInterval, int retryCount = 3) { var exceptions = new List
(); for (int retry = 0; retry < retryCount; retry++) { try { return func(arg1, arg2, arg3, arg4); } catch (Exception ex) { exceptions.Add(ex); Thread.Sleep(retryInterval); } } throw new AggregateException(exceptions); } }

  

转载于:https://www.cnblogs.com/XuPengLB/p/9719836.html

你可能感兴趣的文章
C#中的 ref 传进出的到底是什么 解惑篇
查看>>
全部选中或者全部取消当前页面的勾选框
查看>>
小黑小波比.git pull常见错误
查看>>
linux需要你的不懈努力
查看>>
Request.ServerVariables详细说明
查看>>
关于ibatis简单使用的想法
查看>>
System.DateUtils Range checking functions部分函数示例及说明
查看>>
centos 7 编译 php 5.3.28
查看>>
Java常用包总结
查看>>
Wordpress xmlrpc.php暴力破解漏洞
查看>>
Nginx完整配置说明
查看>>
jacoco-maven-plugin 父子工程 远程获取覆盖率
查看>>
如何防范短信接口被恶意调用(被刷)
查看>>
GSON混淆后执行错误
查看>>
RBAC权限管理
查看>>
【Java对象生命周期】Java对象的生命周期:java是怎么分配内存的和怎么回收的?...
查看>>
高性能的通讯库-zeroMQ的几个高性能特征
查看>>
云计算学习1
查看>>
Elasticsearch教程
查看>>
学校内网802.1X认证连接
查看>>