例子:
我的应用程序正在执行 HTTP 连接。如果我使用主页按钮(快速应用程序切换)切换到主屏幕,我的应用程序正在执行的连接将被取消。
为什么?
有什么办法可以避免吗?
例子:
我的应用程序正在执行 HTTP 连接。如果我使用主页按钮(快速应用程序切换)切换到主屏幕,我的应用程序正在执行的连接将被取消。
为什么?
有什么办法可以避免吗?
不幸的是(或者取决于您如何看待它,幸运的是,因为它可以节省电池寿命),当应用程序由于按下主页按钮而停用时,大多数 HTTP 连接将被取消,并且大多数操作将暂停。此博客文章中的代码将检查 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());
}
}
}
如果你想在后台下载/上传文件,可以看看这篇文章。对于任何更复杂类型的网络操作,您都不走运。
不,没有办法避免这种情况。当您快速应用程序切换时,您的所有网络请求都将被取消。
如果它被取消,您将能够在返回应用程序时遇到的异常中检测到这一点:
catch (WebException webEx)
{
if (webEx.Status == WebExceptionStatus.RequestCanceled)
{
// Retry request
}
else
{
// Handle other exception
}
}
如果您的应用程序有其他方式(手动)取消请求,那么您也需要考虑这些。