2013-04-10 2 views
0

나는 혼란 스럽습니다.MS.Internal.InternalMemoryStream은 백그라운드 에이전트에서 MS.Internal.ReadOnlyBufferedStream이됩니까?

백그라운드 에이전트 예약 작업을 사용하는 Windows Phone 8 응용 프로그램이 있습니다.

특히 배경 에이전트는 unzipper found here을 사용하여 .zip 파일을 다운로드하고 추출합니다. (압축 해제 기능은 응용 프로그램의 일반 배경이 아닌 일반 배경에서 제대로 작동합니다.)

백그라운드 에이전트가 System.NotImplementedException을 던지고있는 것을보고, Unzipper.ParseCentralDirectory 내의 코드 줄까지 추적했습니다.

public sealed class Unzipper : IDisposable 
{ 
    private Stream stream; 
    ... 

내가 언급 한 바와 같이, unzipper 기능이 일반에 잘 작동 :()

private List<FileEntry> ParseCentralDirectory() 
{ 
    BinaryReader reader = new BinaryReader(this.stream); 
    //this next line is the one that's throwing the System.NotImplementedException 
    reader.BaseStream.Seek(-4, SeekOrigin.End); 

이 경우, BinaryReader를 매개 변수 "this.stream은"클래스의 상단에 정의된다 주요 응용 프로그램. 그래서 주 응용 프로그램과 백그라운드 응용 프로그램 사이에 문제가되는 코드 섹션의 차이점을 확인했습니다. 주 프로젝트와 백그라운드 에이전트 프로젝트 모두에서 unzipper 클래스가 별도로 나타납니다.

Unzipper ("this.stream"로 참조 됨)는 MS.Internal.InternalMemoryStream입니다. 그러나 배경 에이전트가 백그라운드 Unzipper.cs에서이 동일한 행에 도달하면 "this.stream"은 MS.Internal.ReadOnlyBufferedStream입니다.

이것이 유일한 차이점입니다. 그러나 이것이 문제인지 확실하지 않습니다. 그것은

reader.BaseStream.Seek(-4, SeekOrigin.End); 

에 System.NotImplementedException을 던지고 있지만 MS.Internal.ReadOnlyBufferedStream, 사실, 난에 대한 Unzipper 검사를 통지 ("진실"의 "있는 CanSeek"속성을 가지고 않으며, 경우에 NotSupportedException이를 던졌습니다 거짓입니다.)

나는 여기에 난처한 상황에 처해있다. 실제로, "MS.Internal.ReadOnlyBufferedStream"검색 결과는 하나가 아닙니다. (이제는 추측 할 수 있겠지만 ...)

답변

1

백그라운드 에이전트는 대부분의 네트워크 기반 API에 비해 크게 다른 구현 방식을 사용합니다.

나는 격리 된 저장소의 임시 파일로 데이터를 스트리밍 한 다음 에 스트림을 열어 해당 파일의 압축을 풉니 다..

응용 프로그램 어셈블리를 포함하여 6MB의 메모리 (RAM) 만 가지고 게임을 마친 후에는 작업이 종료되고 (3 회 발생하면 일정이 잡히지 않음) 유의하십시오. 압축이 풀리는 동안 메모리 문제가 발생할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 이 방법을 사용하여 파일을 격리 된 저장소로 다운로드 한 다음 isolatedStorageStream을 열고 Unzipper의 새 인스턴스로 전달했습니다. 이 "System.ArgumentException throw합니다 : 스트림을 읽을 수 없습니다." –

+0

또한 네트워크 기반 API가 백그라운드 agnets에서 어떻게 다른지 자세히 설명 할 수 있습니까? 이것에 대한 정보를 찾을 수없는 것 같습니다. –

+0

첫 번째 문제는 압축 스트림에 파일 스트림을 전달하기 전에 파일 스트림을 처리하는 것처럼 들립니다. –

관련 문제