Jam*_*ery 12 c# design-patterns
我注意到这个问题在我做的大多数事情中发生了很多,所以我认为必须有一个设计模式.
基本上,如果抛出异常,尝试解决问题并重试.如果我把它放在try中,它所做的就是捕获异常,但我想重试它正在做的事情,如果再次失败,再次重试一定次数.
这种东西有共同的模式吗?
Jee*_*raj 17
检查这个答案..希望能帮助你
public static class RetryUtility
{
public static void RetryAction(Action action, int numRetries, int retryTimeout)
{
if(action == null)
throw new ArgumenNullException("action");
do
{
try
{
action();
return;
}
catch
{
if(numRetries <= 0)
throw; // Avoid silent failure
else
{
Thread.Sleep(retryTimeout);
numRetries--;
}
}
}
while(numRetries > 0);
}
}
Run Code Online (Sandbox Code Playgroud)
呼叫
RetryUtility.RetryAction( () => SomeFunctionThatCanFail(), 3, 1000 );
Run Code Online (Sandbox Code Playgroud)
归功于LBushkin
这运行不确定但是很容易为while子句添加循环计数器
var solved = false;
var tries = 0;
while (!solved)
{
try
{
//Do Something
solved = true;
}
catch
{
//Fix error
}
finally
{
if(solved || IsRediculous(tries))
break;
tries++;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |