如何为 SQL 更新表编写一个弹性的面向对象方法,并在 catch 中重试 [已关闭]

问题描述 投票:0回答:1

我需要一种尝试多次更新表的方法。这是我第一次尝试。

void UpdateSomeSQLRows(uint retryCount = 3)
{
    try
    {
        // Some Code
    }
    catch (Exception e)
    {
        retryCount--;

        if (retryCount != 0)
            UpdateSomeSQLRows(retryCount);
    }
}

它是否可以使用本机 Microsoft sqlclient 弹性地进行 sql 更新?

c# oop exception recursion methods
1个回答
0
投票

有一个名为 Poly 的库可以很好地做到这一点,并具有许多高级功能。这还会在最后一次重试尝试后将异常传播到调用函数,而不是静默失败,并且还会在每次尝试之间增加延迟。

internal class Program
{
    private static Policy retrySqlPolicy = 
        Policy
            .Handle<Exception>()
            .WaitAndRetry(3, retryAttempt => TimeSpan.FromSeconds(2));

    static void Main(string[] args)
    {
        UpdateSomeSQLRows();
    }

    static void UpdateSomeSQLRows()
    {
        retrySqlPolicy.Execute(() =>
        {
            // Some Code
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.