Продолжайте попытки поговорить с сервером, когда Интернет не работает.

Итак, мое приложение обменивается запросами / ответами с сервером (без проблем), пока интернет-соединение не прерывается на пару секунд, а затем возвращается. Затем код вроде это:

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 когда Интернет вернулся.

Что я делаю не так? Есть ли другой способ исправить это?

Спасибо!

6
задан FishBasketGordo 5 August 2011 в 12:56
поделиться