【问题标题】:WP7 - Fast app switching and Internet ConnectionWP7 - 快速应用程序切换和互联网连接
【发布时间】:2013-03-23 15:57:09
【问题描述】:

例子:

我的应用程序正在执行 HTTP 连接。 如果我使用主页按钮(快速应用程序切换)切换到主屏幕,我的应用程序正在执行的连接将被取消。

为什么?

有什么办法可以避免吗?

【问题讨论】:

  • 你是如何建立联系的?当应用停用时,大多数类如 HttpWebRequest 将被取消。
  • 我正在使用 HttpWebRequest。有什么办法可以避免吗?

标签: windows-phone-7 internet-connection fast-app-switching


【解决方案1】:

不幸的是(或者取决于您如何看待它,幸运的是,因为它可以节省电池寿命),当应用程序由于按下主页按钮而停用时,大多数 HTTP 连接将被取消,并且大多数操作将暂停。 this blog post 中的这段代码将检查 HttpWebRequest 是否因应用停用(墓碑)而取消:

    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());
            }
        }
    }

如果你想在后台下载/上传文件,你可以看看this article。对于任何更复杂类型的网络操作,您都不走运。

【讨论】:

    【解决方案2】:

    不,没有办法避免这种情况。当您快速应用切换时,您的所有网络请求都将被取消。

    如果它被取消,您将能够在返回应用程序时遇到的异常中检测到这一点:

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

    如果您的应用程序有其他方式(手动)取消请求,那么您也需要考虑这些。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2015-09-12
      • 2017-03-14
      相关资源
      最近更新 更多