Таким образом, мое приложение обменивается запросами / ответами с сервером (без проблем), пока интернет-соединение не прервется на пару секунд, а затем не вернется.Затем код, подобный этому:
response = (HttpWebResponse)request.GetResponse();
сгенерирует исключение со статусом ReceiveFailure
, ConnectFailure
, KeepAliveFailure
и т. Д.
Сейчас, очень важно, что если интернет-соединение восстановится, я смогу продолжить общение с сервером, иначе мне придется начинать заново с самого начала, и это займет много времени.
Как бы выпойти на возобновление этого общения, когда интернет вернется?
В данный момент я продолжаю проверять возможность связи с сервером до тех пор, пока это возможно (по крайней мере, теоретически).Моя попытка кода выглядит следующим образом:
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
// We have a problem receiving stuff from the server.
// We'll keep on trying for a while
if (ex.Status == WebExceptionStatus.ReceiveFailure ||
ex.Status == WebExceptionStatus.ConnectFailure ||
ex.Status == WebExceptionStatus.KeepAliveFailure)
{
bool stillNoInternet = true;
// keep trying to talk to the server
while (stillNoInternet)
{
try
{
response = (HttpWebResponse)request.GetResponse();
stillNoInternet = false;
}
catch
{
stillNoInternet = true;
}
}
}
}
Однако проблема в том, что второй оператор try-catch продолжает выдавать исключение, даже когда Интернет возвращается.
Что я делаю неправильно?Есть ли другой способ исправить это?
Спасибо!