WP7 - быстрое переключение приложений и подключение к Интернету

Пример:

Мое приложение выполняет HTTP-соединение. Если я переключаюсь на домашний экран с помощью кнопки "Домой" (быстрое переключение приложений), соединение, которое выполняло мое приложение, отменяется.

Зачем?

Есть ли способ избежать этого?

2 ответа

Решение

К сожалению (или в зависимости от того, как вы на это смотрите, к счастью, поскольку это экономит заряд батареи), когда приложение деактивируется из-за нажатия кнопки "Домой", большинство HTTP-соединений будут отменены, а большинство операций приостановлено. Этот код из этого поста будет проверять, был ли отменен запрос HttpWebRequest при деактивации приложения (tombstoning):

    try
    {
         HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyResultAsync);
    }
    catch (WebException e)
    {
        if (e.Status == WebExceptionStatus.RequestCanceled)
            MessageBox.Show("Looks like your request was interrupted by tombstoning");
        else
        {
            using (HttpWebResponse response = (HttpWebResponse)e.Response)
            {
                MessageBox.Show("I got an http error of: " + response.StatusCode.ToString());
            }
        }
    }

Если вы хотите загрузить / загрузить файл в фоновом режиме, вы можете взглянуть на эту статью. Для любых более сложных типов сетевых операций вам не повезло.

Нет, этого не избежать. При быстром переключении приложений все ваши веб-запросы будут отменены.

Если он был отменен, вы сможете обнаружить это в исключении, которое вы получите при возвращении в приложение:

catch (WebException webEx)
{
    if (webEx.Status == WebExceptionStatus.RequestCanceled)
    {
        // Retry request
    }
    else
    {
        // Handle other exception 
    }
}

Если в вашем приложении есть другие способы (вручную) отмены запросов, вам также необходимо учесть их.

Другие вопросы по тегам