0

Windows Phone 응용 프로그램을 작성 중이며 매우 큰 mp3 파일을 다운로드하여 격리 된 저장소에 저장해야합니다. 나는이 코드를 모두 가지고 있으며, 작은 파일로 테스트했지만, 실제 파일을 사용하고 디버그 출력을 사용하여 코드가 무엇을 모니터링하는지, 스레드가 실제로 절반 정도 빠져 나가는 것을 깨달았다. 다운로드 및 파일 다운로드가 실제로 완료되지 않습니다.Windows Phone 리소스 집약적 인 작업 종료

이런 일이 발생하는 이유가 있으며, 그렇다면이를 방지하기 위해 무엇을 할 수 있습니까?

답변

2

시간 초과 후 시간은 얼마나됩니까? HttpWebRequest를 사용하여 파일을 다운로드하는 경우 기본 시간 제한은 100,000ms (100 초)입니다. 이 삽입으로 간단하게 변경할 수 있습니다 (! 밀리 초)

HttpWebRequest.Timeout = 10; 

귀하의 HttpWebRequest를 사용하지 않는 경우 분명히 자신의 시간 제한을 설정하고 WebRequest 클래스 :

에 부착, 내가 당신이 무엇인지 알려주세요 사용하고 최선을 다해 당신을 도울 것입니다.

+0

HttpWebRequest를 사용하고 있지만, .Timeout 속성을 찾을 수 없습니다. – AllFallD0wn

+0

@ AllFallD0wn http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.aspx 및 http://msdn.microsoft.com/en-us/library/system.net에서 살펴보십시오. .httpwebrequest.timeout.aspx WP7 SDK를 더 이상 설치하지 않아서 슬프게도 플레이 할 수 없습니다. ( – ConnorRoberts

0

WP의 내부 메모리와 프로세스 관리가이 점에 유의합니다. 백그라운드 OS에서 많은 양의 데이터를 다운로드하는 앱에서 스레드를 생성 한 경우 대부분의 기회 메모리를 통해 이러한 리소스가 다른 프로세스에 필요할 때이를 삭제합니다.

당신은 다운로드에 대한 귀하의 접근 방식에 따라 두 가지 작업을 수행 할 수 있습니다 버퍼 따라서 스레드의 메모리 사용을 제한, 특정 크기에 도달하면

  1. 주기적으로 IsolatedStorage에서 버퍼 덩어리를 저장합니다.
  2. 다운로드 스레드를 "무한"실행을 허용하는 BackgroundTask로 구현하십시오.
+0

바로 ScheduledAgent가 백그라운드 작업이고, 그렇다면 다운로드가 이미 완료되었다고 생각합니다. 백그라운드 작업이지만 아직 3 개의 스레드가 다운로드 중간에서 계속 진행 중입니다 – AllFallD0wn

+0

10 분 동 안 실행합니까? –

+0

정확히 시간을 맞출 수는 없지만 10 분이 아니며 4, 5가 더 비슷합니까? – AllFallD0wn