Streamline -Wiederholungslogik mit C# Lambda -Ausdrücken
robuste Anwendungen erfordern häufig Wiederholungsmechanismen, um potenzielle Ausfälle anmutig zu bewältigen. Während traditionelle Wiederholungsschleifen komplex und anfällig für Fehler sein können, bieten C# Lambda -Ausdrücke eine elegantere und wiederverwendbarere Lösung.
Dieser Artikel zeigt eine Retry
Klasse, die die Wiederholung der Logik vereinfacht. Die Kernfunktionalität wird in der Do
-Methode eingekapselt, die einen Lambda -Ausdruck akzeptiert, der die zu erniedrigte Operation darstellt.
Hier ist eine verallgemeinerte Implementierung:
<code class="language-csharp">public static class Retry { public static void Do(Action action, TimeSpan retryInterval, int maxAttemptCount = 3) { var exceptions = new List<Exception>(); for (int attempted = 0; attempted < maxAttemptCount; attempted++) { try { action(); break; // Success! Exit the loop. } catch (Exception ex) { exceptions.Add(ex); if (attempted < maxAttemptCount - 1) { Thread.Sleep(retryInterval); } } } if (exceptions.Any()) { throw new AggregateException(exceptions); } } }</code>
Diese Do
-Methode ermöglicht flexible Wiederholungskonfigurationen: Angabe des Wiederholungsintervalls und der maximalen Anzahl von Versuchen. Es sammelt Ausnahmen, die aufgetaucht sind, und wirft ein AggregateException
aus, wenn alle Versuche fehlschlagen.
Die Retry
Klasse ist einfach und intuitiv:
<code class="language-csharp">Retry.Do(() => SomeFunctionThatMightFail(), TimeSpan.FromSeconds(1));</code>
Das obige ist der detaillierte Inhalt vonWie können C# Lambda -Ausdrücke die Wiederholungslogik für die Behandlung potenzieller Fehler sauber implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!