Я следую этой схеме, чтобы решить эту проблему:
public void Send(String data, Int32 attemptNumber)
{
try
{
yourCodeHere(data);
}
catch (WebException ex)
{
if (attemptNumber > 0)
Send(data, --attemptNumber);
else
throw new AttemptNumberExceededException("Attempt number exceeded!", ex);
}
catch (Exception ex)
{
//Log pourpose code goes here!
throw;
}
}
Попытка навсегда, кажется, не очень хорошая идея, так как вы можете получить бесконечный процесс. Если вы думаете, что вам нужно много попыток для достижения своей цели, просто установите здесь огромное количество.
Я лично считаю целесообразным подождать несколько миллисекунд или секунд после каждой попытки Thread.Sleep (1000); перед вызовом Отправить (данные); --- вы могли бы Например, используйте переменную tryPNumber для увеличения или уменьшения этого времени ожидания, если вы считаете, что оно целесообразно для вашего сценария.