2014-10-19 3 views
0

여기에서 일부 코드를 테스트 중이며 정말 이상한 문제가 발생했습니다. HttpClient 클래스는 태블릿이 켜져 있으면 매력처럼 작동하지만 배터리 안전 상태가 시작되고 화면이 잠길 때마다 HttpClient 클래스가 예외를 throw하고 앱이 갑자기 종료되어 예외 기록에 약간의 기회가 주어집니다. 내가 실수를 잘못하지 않았다면 오류가 요청을 보내는 것 같지만 태블릿이 켜져있는 동안 인터넷에 완전히 액세스 할 수 있기 때문에 이상합니다. 여기Windows 저장소 앱 HttpClient 문제

내가 사용하고 코드와 그 상태에 하나의 충돌 (System.Net.Http 네임 스페이스) :

또는
private static async Task<string> HttpGet(string uri) 
    { 
     using (var client = new HttpClient()) 
     { 
      client.DefaultRequestHeaders.Add("User-Agent", BotUserAgent); 
      var response = await client.GetAsync(uri); 
      return await response.Content.ReadAsStringAsync(); 
     } 
    } 

나는 함께 web.http 네임 스페이스의 클라이언트를 사용했습니다 동일한 결과 :를 전송하는 동안 에러가 발생

:

using(var client = new Windows.Web.Http.HttpClient()) 
     { 
      client.DefaultRequestHeaders.Add("User-Agent", BotUserAgent); 
      var response = await client.GetAsync(new Uri(uri)); 
      return await response.Content.ReadAsStringAsync(); 
     } 

이 난 (예외 로거를 추가 한 후) 얻을 오류라고 요청.

아이디어가 있으십니까?

답변

0

문제는의 배터리 안전 상태 kiks. 사용자가 배경으로 응용 프로그램을 이동 할 때마다

이 앱이 일시 중단되거나 동결 할 수 있습니다 때 WinRT-장치가 배경에 응용 프로그램을 전송하는 것입니다 본질적으로 트랙에서 죽은 다운로드를 중지합니다. 일부 시나리오에서는 응용 프로그램이 일지라도 다운로드를 다시 시작하기 위해 클래스의 새 인스턴스를 만들어야 할 수도 있습니다. 다행히도 WinRT는 백그라운드 작업을 사용하여이 특정 시나리오를 처리 할 수있는 방법을 제공합니다.

이 사이트에 http://www.informit.com/articles/article.aspx?p=2229233&seqNum=6

에서 인용 한 것은 Windows.Networking.BackgroundTransfer - 네임 스페이스에 BackgroundTransfers을 사용하는 방법에 따라 할 수있는 쉬운 튜토리얼입니다.

+0

답변 해 주셔서 감사합니다. 당신이 제공 한 링크로 백그라운드 다운로더를 구현할 수 있었고 마침내 문제를 해결할 수있었습니다. 고맙습니다! –