使用lambda表达式的简化C#重试逻辑
> 在C#中,重试操作是一项常见的任务。 传统方法通常涉及明确的重试循环,从而导致冗长和可重复使用的代码较少。 lambda表达式提供了更优雅的解决方案。这个示例演示了可重复使用的基于lambda的重试包装器:
<code class="language-csharp">public static class RetryHelper { public static void Execute(Action action, TimeSpan retryInterval, int maxAttempts = 3) { Execute(() => { action(); return null; }, retryInterval, maxAttempts); } public static T Execute<T>(Func<T> action, TimeSpan retryInterval, int maxAttempts = 3) { var exceptions = new List<Exception>(); for (int attempt = 0; attempt < maxAttempts; attempt++) { try { return action(); } catch (Exception ex) { exceptions.Add(ex); if (attempt < maxAttempts - 1) { Thread.Sleep(retryInterval); } } } throw new AggregateException("Retry attempts failed.", exceptions); } }</code>
RetryHelper
>使用很简单:
对于返回值的方法:
<code class="language-csharp">RetryHelper.Execute(() => SomeMethodThatMightFail(), TimeSpan.FromSeconds(2)); </code>
>可以轻松地添加异步超载以进行异步操作。 这种方法为处理C#中的重试逻辑提供了简洁而可重复的解决方案。
以上是Lambda表达如何简化C#中的重试逻辑?的详细内容。更多信息请关注PHP中文网其他相关文章!