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}");
                });
            });
相关推荐
qq_2153978973 分钟前
docker 管理工具 Portainer安装
运维·服务器·docker
一 乐5 分钟前
健康打卡|健康管理|基于java+vue+的学生健康打卡系统设计与实现(源码+数据库+文档)
android·java·数据库·vue.js·spring boot·微信小程序
木子李BLOG7 分钟前
Element Plus
前端·javascript·vue.js
ghie90909 分钟前
使用Java实现用户的注册和登录流程
java·数据库·oracle
Miketutu12 分钟前
【大屏优化秘籍】Element UI El-Table 表格透明化与自定义行样式实战
前端·javascript·vue.js
华哥啊.21 分钟前
服务器安装node_exporter监测cpu以及内存相关情况
运维·服务器
rainboy30 分钟前
Flutter :自己动手,封装一个小巧精致的气泡弹窗库
前端·flutter·github
while(1){yan}33 分钟前
MYSQL索引的底层数据结构
数据结构·数据库·mysql
by__csdn35 分钟前
Spring Boot 全面解析
java·数据库·spring boot·后端·spring
她说..36 分钟前
基于Redis实现的分布式唯一编号生成工具类
java·数据库·redis·分布式·springboot