在我的Windows Phone 8应用程序中,我使用异步方法从服务器检索数据。
在实施Fast App Resume
功能后,我遇到了另一个问题。从服务器检索数据的异步方法在恢复时会抛出类型System.Net.WebException
的异常。
重现问题的步骤是,当应用程序通过异步方法加载数据时,您只需点击开始按钮即可。
例如,我有一个加载用户通知的页面。我调用async void GetNotifications()
方法进一步调用下面的方法来检索响应字符串。
public async Task<string> Get(string URL)
{
var request = WebRequest.Create(new Uri(URL)) as HttpWebRequest;
if (APIHelper.APIHandshake != null)
request.Headers["Cookie"] = "ii=" + APIHelper.APIHandshake.Sid + ";";
return await httpRequest(request);
}
下面给出了httprequest方法的实现。
private async Task<string> httpRequest(HttpWebRequest request)
{
string received;
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory
.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
//cookieJar = request.CookieContainer;
//responseCookies = response.Cookies;
received = await sr.ReadToEndAsync();
}
}
}
return received.Replace("[{}]", "[]")
.Replace("[{},{}]", "[]")
.Replace("\"subcat_id\":\"\"", "\"subcat_id\":\"0\"");
}
用户只需单击打开通知页面的菜单,然后立即按下手机的开始按钮即可停用该应用程序。当用户从开始菜单点击应用程序磁贴时,将抛出异常。
任何解决方案?将停用空闲模式检测工作?
答案 0 :(得分:0)
它可能不是最好的解决方案,但可以通过在app.xaml.cs页面上的InitalizePhoneApplication()方法中添加这行代码来取消异步请求。
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
详细了解此媒体资源here
测试一下,它应该解决这个问题,但我并不是假装这是最好的事情....