2012-12-15 2 views
1

/*이 질문을 작성하고 테스트 할 때 질문에 대한 답변을 관리하는 동안 다른 결과가 나올 수 있도록 내 결과를 공유했습니다. 아래의 답변을 참조하십시오. */Windows Phone - 웹 클라이언트 요청이 실행되지 않음

배경 작업에서 API에서 JSON 데이터를 가져 오려고합니다. 나는 백그라운드 작업을 멋지게 실행하고 있지만, 데이터를 가져 오려고 할 때 아무 일도 일어나지 않는다.?!? 여기

내가 사용하는 코드입니다 :

protected override void OnInvoke(ScheduledTask task) 
    { 

     string wurl = @"http://test.com/api/stuff/getdata"; 

     WebClient webClient = new WebClient(); 
     webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted); 
     webClient.DownloadStringAsync(new Uri(wurl)); 


     NotifyComplete(); 

    } 

그 모든 ... webClient_DownloadStringCompleted가 실행되지 없구요입니다.

답변

5

여기서 중요한 점은 WebClient비동기NotifyComplete()WebClient 데이터를 가져올 수있는 기회를 가지고 전에 실행됩니다 그 방법을 실행하는 것입니다.

로 전화하면 작업을 완료했음을 OS에 알리고 시스템은이를 종결해야합니다.

해결 방법은 비동기 메서드 webClient_DownloadStringCompleted (이 경우)의 끝에서 NotifyComplete()을 이동하고 ... voala! 1 경고

: 당신은 당신이하고있는 어떤 완료 될 때까지 최대 25 초, 그렇지 않으면 작업이 종료됩니다있다.

경고 2 : 귀하의 백그라운드 작업 메모리 10MB의 (내가 윈도우 폰 8로 테스트 에뮬레이터) 6메가바이트 (일부 휴대 전화에) 이상을 소비 할 수 없다! 백그라운드 작업이 수행되면 작업이 종료됩니다.

앱이 메모리와 시간 (최대 10 분)을 소비하는 경우 Resource Intensive 백그라운드 작업을 사용하는 것이 좋습니다.이 유형의 작업은 휴대 전화가 충전되는 동안에 만 사용할 수 있습니다.

관련 문제