2011-01-17 4 views
4

Xml serialize를 사용하여 Isolatedstorage에 약 3,000 개의 개체가있는 목록을 저장합니다. 이 작업을 deserialize하는 데 너무 오래 걸리고 작업 속도를 높이기위한 권장 사항이 있는지 궁금합니다.WP7의 isolatedStorage에 큰 목록 저장

최대 500 개 개체를 deserialize 할 수 있지만 3000을 deserialize하는 데 영원히 걸립니다. 에뮬레이터에서 더 오래 걸리며 전화가 더 빨라 집니까?

나는 검색을 많이했고 일부 문서는 이진 스트림 리더를 사용한다고했지만 나는 그것을 발견 할 수 없다. 바이너리 또는 XML로 저장하는 것이 중요하지 않든, 그냥 목록을 유지하려고합니다. 나는 아직 비동기로드를보고 싶지 않아

... 많은 항목의

답변

3

체크 아웃 sharpSerializer의 일부입니다 이진 직렬 : http://www.sharpserializer.com/en/index.html

그것은 아주 쉽게 아주 잘 작동합니다. (이 psuedocode을 고려하고 eugenedotnet에 나열된 기능을 사용하여) App.xaml.cs를에

을 내가처럼 사용하고 http://www.eugenedotnet.com/2010/12/windows-phone-7-serialization-sharpserializer/

을 : 여기

는 WP7에서 사용에 대해 이야기 블로그입니다 :

Application_Dectivated() 
{ 
    IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.OpenOrCreate); 
    Serialize(stream,(obj)MyHugeList<myObject>); 
} 

Application_Activated() 
{ 
    IsolatedStorageFileStream stream = store.OpenFile(fileName, FileMode.Open); 
    Deserialize(stream,(obj)MyHugeList<myObject>); 
} 
+0

매우 유용합니다. 나는 이진 모드를 사용하고 있으며, 잘 작동한다. thx –

3

, 당신은 최적화 된 직렬화 스토리를 구축 할 필요가있다. 이 작업을 수행하는 데 많은 사람들이 간단한 CSV 및 텍스트 형식을 사용합니다.

내장 된 시리얼 라이저만으로는 충분히 빠르지 않을 수 있습니다.

많은 이유 때문에 배경 스레드에서이 작업을 수행하는 것이 좋습니다. 그래도이 작업을 원하지 않는다고 말한 적이 있습니다.

4

먼저 여기에 좋은 정보가 있으므로 +1하십시오.

이 기사를 검토하여 다양한 상자 직렬화 기술을 사용하여 기대할 수있는 성능에 대한 좋은 관점을 제공하는 것이 좋습니다.

Windows Phone 7 Serialization: Comparison | eugenedotnet blog

WP7 Serialization Comparison

로드하고 하나는 모든 시간을 명중 모든 것을 쓸 필요가없는 경우도 여러 개의 파일을 사용하는 것이 좋습니다.

Jeff의 조언은 사용자 상호 작용 경험을 저하시키지 않도록 백그라운드 스레드에 남아있는 실질적인 작업을 얻는 것이 좋습니다.

상당히 간단합니다. 여기 제가 자주 추천하고 사람들은 간결하고 도움이되는 연습입니다.

Phạm Tiểu Giao - Threads in WP7

그리고

또한이 최근 숀 Wildermuth으로도 매우 좋아 보인다한다.

Shawn Wildermuth - Architecting WP7 - Part 9 of 10: Threading

+0

Mick과 Jeff, 당신의 충고를 위해서. 어쨌든 UI는 파일로드 및 정보 표시를 기다려야하기 때문에 백그라운드 스레드에 대해 실제로 걱정하지 않았습니다. 이는 해결 방법이며 프로세스의 속도를 향상시키지 않습니다. 또한, 좋은 정보였던 Eugene (좋은) 기사를 읽었습니다. 다른 두 링크를 확인해 보겠습니다. –

+0

비동기의 전제는 대기중인 처리가 진행되는 동안에도 사용자가 UI를 자유롭게 사용할 수 있다는 것입니다. 예를 들어 뒤로 키를 누르기를 원할 수도 있습니다. 요점은 사용자가 앱이 아니라 탐색을 제어해야한다는 것입니다. 이 프로세스가 진행되는 동안 사용하지 않는 부분이 앱에있는 경우 처리가 완료 될 때까지 사용 설정되지 않았 음을 알립니다. 해결 방법이 될 수있는 비동기는 아니지만 개선 된 경험을 가능하게하는 선택입니다. –