Итак, мое приложение обменивается запросами / ответами с сервером (без проблем), пока интернет-соединение не прерывается на пару секунд, а затем возвращается. Затем код вроде это:
response = (HttpWebResponse) request.GetResponse ();
вызовет исключение со статусом ReceiveFailure
, ConnectFailure
, KeepAliveFailure
] и т. д.
Теперь очень важно, что если Интернет-соединение восстановится, я смогу продолжить общение с сервером, иначе мне придется начинать заново с самого начала, а это займет много времени.
Как бы вы возобновили это общение, когда Интернет вернется?
На данный момент я продолжаю проверять возможность связи с сервером, пока это не станет возможным (по крайней мере, теоретически). Моя попытка кода выглядит как this:
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 продолжает генерировать исключение даже w когда Интернет вернулся.
Что я делаю не так? Есть ли другой способ исправить это?
Спасибо!