ホームページ > バックエンド開発 > C++ > Lambda式は、C#のRetry Logicを単純化するにはどうすればよいですか?

Lambda式は、C#のRetry Logicを単純化するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-29 08:51:09
オリジナル
729 人が閲覧しました

How Can Lambda Expressions Simplify Retry Logic in C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート