Правильный это:
попытку общего назначения и повторите попытку с таймаутом в C #. По сути, я хочу следующее:
bool stopTrying = false;
DateTime time = DateTime.Now;
while (!stopTrying)
{
try
{
//[Statement to Execute]
}
catch (Exception ex)
{
if (DateTime.Now.Subtract(time).Milliseconds > 10000)
{
stopTrying = true;
throw ex;
}
}
}
В случае выше, я жду 10 секунд, но это должен быть переменный тайм-аут на основе параметра. Я не хочу повторять этот полный код везде, где мне нужно его использовать. В моем коде есть несколько мест, где они не являются тайм-аутом, встроенным в API, и я получу исключение, если приложение не готово к выполнению оператора. Это также позволило бы избежать жесткой задержки в моем приложении перед этим заявлением.
Разъяснение: Рассматриваемое утверждение может быть чем-то вроде задания. Если я использую делегат и method.Invoke, разве вызов не ограничен внутри делегата, а не оригинальный метод?