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);