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

前端之家收集整理的这篇文章主要介绍了C#中具有超时功能的通用异步重试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几百个调用各种外部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());

猜你在找的C#相关文章