c#retryロジックをlambda式
を合理化しますc#では、操作を再試行することは一般的なタスクです。 従来の方法は、多くの場合、明示的な再試行ループを含み、冗長で再利用可能なコードにつながります。 ラムダの表現は、よりエレガントなソリューションを提供します
この例は、再利用可能なラムダベースの再試行ラッパーを示しています:
<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>
クラスは、retryロジックをカプセル化します。 再試行するアクション(または関数)、再試行間隔、および最大試行回数を提供します。
RetryHelper
使用法は簡単です:
値を返す方法の場合:
<code class="language-csharp">RetryHelper.Execute(() => SomeMethodThatMightFail(), TimeSpan.FromSeconds(2)); </code>
非同期操作のために非同期過負荷を簡単に追加できます。 このアプローチは、C#。
以上がLambda式は、C#のRetry Logicを単純化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。