加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中具有超时功能的通用异步重试

发布时间:2020-12-15 18:09:52 所属栏目:百科 来源:网络整理
导读:我有几百个调用各种外部API,我希望将其包装在一个能够重试和处理超时的通用异步函数中. 基本上,我认为我需要实现类似这个函数调用的东西: await Retry(()=someFunctionAsync(doWorkParams,new CancellationToken()),retryCount,timeout); 如何定义此类重试
我有几百个调用各种外部API,我希望将其包装在一个能够重试和处理超时的通用异步函数中.

基本上,我认为我需要实现类似这个函数调用的东西:

await Retry(()=>someFunctionAsync(doWorkParams,new CancellationToken()),retryCount,timeout);

如何定义此类重试功能?另外,我如何从同步代码中调用此功能,因为我的调用大量存在于同步方法中?

解决方法

不要重新发明轮子. Just use Polly,它完全支持您正在讨论的场景以及各种重试场景和断路器等高级模式.

这是他们的文档的异步示例:

await Policy
  .Handle<SqlException>(ex => ex.Number == 1205)
  .Or<ArgumentException>(ex => ex.ParamName == "example")
  .RetryAsync()
  .ExecuteAsync(() => DoSomethingAsync());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读