【发布时间】:2015-04-29 03:59:58
【问题描述】:
我正在计算基本测试应用程序的例外情况。我期待异常,我们正在 SQL 高可用性故障转移期间测试应用程序的行为。服务器故障转移时会出现短暂的闪烁时间段,预计会出现一些异常。我的 catch 中有一些基本的重试逻辑来计算和处理/重试有异常的操作。这是我的代码。
我的重试课:
public static class Retry
{
public static void DoWithRetry(Action action, TimeSpan sleepPeriod, int retryCount = 3)
{
while (true)
{
try
{
action();
break; // success!
}
catch
{
if (--retryCount == 0) throw;
else Thread.Sleep(sleepPeriod);
}
}
}
}
这是我在捕获中引用它的地方:
catch (Exception ex)
{
ExCounter++;
Retry.DoWithRetry(DbInsertTestTable, TimeSpan.FromSeconds(1), retryCount: 3);
//AppCount.Text = ex.Message;
}
重试有效,但我的异常计数似乎已超过 100 个。如果我关闭重试,我只会得到大约 5 个异常的平均值。使用重试逻辑,我希望它在 1 秒时间跨度睡眠后重试操作,最多尝试 3 次。我如何获得超过 100 个例外?这里是否有正在重置我的时间跨度或重试次数的回发?
【问题讨论】:
-
很抱歉,当这篇文章发布时发生了一些事情,它最初没有在帖子底部发布我的问题。我刚刚更新了原始帖子,因此现在包含我的问题。