C# Retry库

比如网络访问或硬件参数设置需要重试,可引用gunet上的Polly库。

同步方式(每次重试有不同的时间间隔)

cs 复制代码
            var polly = Policy.Handle<Exception>().WaitAndRetry(new[] { new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 2), new TimeSpan(0, 0, 3) }, (ex, t, retryCnt, context) => {
                Debug.WriteLine($"{ex.Message}, {t}, {retryCnt}");
            });
            polly.ExecuteAndCapture(() => {
                Thread.Sleep(1000);
                var random = new Random();
                var v = random.Next(0, 10);
                if (v < 50)
                    throw new Exception("V < 50");
                Debug.WriteLine($"polly.ExecuteAndCapture {Thread.CurrentThread.ManagedThreadId}");
            });

异步方式(每次重试有不同的时间间隔)

cs 复制代码
            var polly = Policy.Handle<Exception>().WaitAndRetryAsync(new[] { new TimeSpan(0, 0, 1), new TimeSpan(0, 0, 5), new TimeSpan(0, 0, 10) }, (ex, t, retryCnt, context) => {
                Debug.WriteLine($"{ex.Message}, {t}, {retryCnt}  ThreadID={Thread.CurrentThread.ManagedThreadId}");
            });
            polly.ExecuteAndCaptureAsync(async () => {
                await Task.Run(() => {
                    Thread.Sleep(1000);
                    var random = new Random();
                    var v = random.Next(0, 10);
                    if (v < 50)
                        throw new Exception("V < 50");
                    Debug.WriteLine($"polly.ExecuteAndCapture {Thread.CurrentThread.ManagedThreadId}");
                });
            });
相关推荐
白总Server6 分钟前
物联网网关确保设备安全
服务器·网络·物联网·安全·web安全·自然语言处理·架构
岁岁岁平安7 分钟前
mysql上课总结(2)(DCL的所有操作总结、命令行快速启动/关闭mysql服务)
数据库·mysql·命令行·权限·dcl·localhost
Boboboobo7 分钟前
记MySQL下一次DEPENDENT SUBQUERY的优化
数据库·sql·mysql·性能优化
weixi_kelaile52013 分钟前
ai智能语音电销机器人可以做哪些事情?
java·linux·服务器·人工智能·机器人·云计算·腾讯云
Z_ One Dream15 分钟前
css 在 hover 子元素时,不要让父元素触发 hover 效果
前端·javascript·css
hummhumm17 分钟前
Oracle 第13章:事务处理
开发语言·数据库·后端·python·sql·oracle·database
隐居的遮天恶鬼1 小时前
Mac OS 搭建MySQL开发环境
数据库·mysql·mac
abandondyy3 小时前
MySQL---主从复制和读写分离
数据库·mysql
0725游广川3 小时前
cjson内存泄漏问题注意事项
服务器·json
DEARM LINER4 小时前
mysql 巧妙的索引
数据库·spring boot·后端·mysql