Heim > Backend-Entwicklung > C++ > Wie kann ich elegant wieder in C#implementieren?

Wie kann ich elegant wieder in C#implementieren?

DDD
Freigeben: 2025-01-29 08:32:11
Original
458 Leute haben es durchsucht

How to Elegantly Implement Retry Logic in C#?

Verwirklichen Sie die Logik, die logische elegante Logik in C#

wiederzusetzen In der Softwareentwicklung müssen einige Vorgänge möglicherweise mehrmals ausprobiert werden, um erfolgreich abzuschließen. Traditionelle Methoden verwenden normalerweise den

-Zyklus mit expliziten Wiederholungszeiten, wie z. B. dem folgenden Code:

while

Obwohl diese Methode sicherstellt, dass die Operation wiederholt definiert wird, kann die Zusammenstellung in verschiedenen Fällen kompliziert sein. Häufigere Methoden können prägnantere und wiederverwendbare Lösungen liefern.
int retries = 3;
while (true)
{
    try
    {
        DoSomething();
        break; // 成功!
    }
    catch
    {
        if (--retries == 0) throw;
        else Thread.Sleep(1000);
    }
}
Nach dem Login kopieren

<入> Einführung

Klasse

Retry Ziel ist es, eine wiederverwendbare -Klasse zu erstellen, die eine Kommission als Parameter akzeptiert und Operationen im Re -Test -Block ausführt. Der folgende Code bietet eine mögliche Implementierung:

Retry <<> Verwenden Sie

Klasse
public static class Retry
{
    public static void Do(Action action, TimeSpan retryInterval, int maxAttemptCount = 3)
    {
        Do(() => { action(); return null; }, retryInterval, maxAttemptCount);
    }

    public static T Do<T>(Func<T> action, TimeSpan retryInterval, int maxAttemptCount = 3)
    {
        var exceptions = new List<Exception>();

        for (int attempted = 0; attempted < maxAttemptCount; attempted++)
        {
            try
            {
                return action();
            }
            catch (Exception ex)
            {
                exceptions.Add(ex);
                if (attempted < maxAttemptCount -1)
                {
                    Thread.Sleep(retryInterval);
                }
            }
        }
        throw new AggregateException(exceptions);
    }
}
Nach dem Login kopieren

Diese Methode kann auf verschiedene Weise verwendet werden, um die Wiederholungslogik zu erreichen: Retry

Wie gezeigt, bietet diese Methode eine flexible Möglichkeit, den Wiederholung zu verarbeiten, wodurch die Anzahl der Versuche, das Wiederholung von Intervall und die Ausführung des Betriebs angegeben werden kann.

Das obige ist der detaillierte Inhalt vonWie kann ich elegant wieder in C#implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage