RetryHelper.cs 983 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. namespace Hotline.Share.Tools;
  2. /// <summary>
  3. /// 重试操作辅助类
  4. /// </summary>
  5. public static class RetryHelper
  6. {
  7. /// <summary>
  8. /// 重试
  9. /// </summary>
  10. /// <param name="func"> 重试方法 </param>
  11. /// <param name="times"> 重试次数 (1 与 100 之间的整数) </param>
  12. /// <param name="millisecond"> 重试等待毫秒 </param>
  13. /// <returns> 是否执行成功 </returns>
  14. public static bool Retry(Func<bool> func, int times, int millisecond = 0)
  15. {
  16. if (times <= 1 && times >= 100)
  17. {
  18. throw new ArgumentOutOfRangeException("times 参数有误。只能是介于 1 与 100(包含1和100)之间的整数。");
  19. }
  20. while (times > 0)
  21. {
  22. if (func())
  23. {
  24. return true;
  25. }
  26. times--;
  27. if (millisecond > 0)
  28. {
  29. Thread.Sleep(millisecond);
  30. }
  31. }
  32. return false;
  33. }
  34. }