[C#].NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?

.NET 作者: Rector 1255 次阅读 · 读完约需 2 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.NET/C#的程序开发中,有时候需要对一些失败的任务进行多次的重试,如果重试的次数达到我们设定的阀值,则再放弃任务,比如有以下的C#伪代码:

现在,需要使用C#将上述的代码块进行重写成如下的格式:

如何使用C#对其进行重写,如果可以,又如何实现呢?

方案一

使用一个静态类和静态的泛型方法来处理,创建通用的任务重试机制,我们可以使用Action作为参数,如下的Retry静态类及对应的方法:

调用方法如下:

或者:

或者:

甚至,你也可以自己重载一个async的异步方法。

方案二

使用第三组件,如PollyPolly是一个.NET Framework下的任务重试解决方案组件,用Polly你可以非常方便地完成如:Retry,Retry Forever,Wait and Retry或者Circuit Breaker等等重试操作,并且Polly的重试写法是链式的,如:

更多文档请见 Polly官方地址

方案三

任务重试机制的简单方法:

调用方法:

或者

需要更多参数,如重试间隔、重试次数等:

调用方法:

或者我们可以使用async异步方法,如:

调用方法:

方案四

以下方案可以执行重试方法以及重试失败的异常处理方法:

方案五

调用方法:

阅读了该文章的人还浏览了...

本文永久链接码友网 » [C#].NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?

发布于: 2018-02-25 23:02:53
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册