2

示例:WP7 - 快速应用切换和Internet连接

我的应用正在进行HTTP连接。 如果使用Home Button(快速应用切换)切换到主屏幕,我的应用正在进行的连接被取消。

为什么?

是否有某种方式来避免呢?

+0

你是如何进行连接的?当应用程序停用时,大多数类如HttpWebRequest将被取消。 – msbg 2013-03-24 01:44:43

+0

我正在使用HttpWebRequest。有没有办法避免这种情况? – Richard 2013-03-24 14:02:35

回答

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。对于任何更复杂的网络操作类型,您都不走运。

0

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

如果它被取消了,你就可以在返回到应用程序时,你得到的异常检测此:

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

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