В моем приложении для 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\"");
}
Пользователь просто щелкает меню, которое открывает страницу уведомлений, а затем мгновенно нажимает кнопку запуска телефона, чтобы деактивировать приложение. Когда пользователь щелкнет плитку приложения в меню «Пуск», будет выдано исключение.
Любое решение? будет ли работать деактивация определения режима ожидания?