再試行ロジックを作成する最もクリーンな方法に触発されましたか? 私はこれを作りました
public static T Retry<T>(int numRetries, int timeout, Delegate method, params object[] args)
{
if (method == null)
throw new ArgumentNullException("method");
var retval = default(T);
do
{
try
{
retval = (T) method.DynamicInvoke(args);
return retval;
}
catch (TimeoutException)
{
if (numRetries <= 0)
throw; // avoid silent failure
Thread.Sleep(timeout);
}
} while (numRetries-- > 0);
return retval;
}
ただし、メソッドグループの問題に遭遇しました。
テスト設定
private int Add(int x, int y)
{
return x + y;
}
public static void Main(string[] args)
{
var r = Retry<int>(5, 10, Add, 1, 1);
}
他にこれを修正するより良い方法はありませんかRetry<int>(5, 10, new Func<int, int, int>(Add), 1, 1);