2013-05-13 15 views
0

나는 Songs의 목록을 가지고 있습니다. 나중에로드 할 때이 목록을 저장해야하지만 고유 ID가 내장되어 있지 않으므로 트랙 제목과 아티스트를 저장하는 KeyValuePair 만 사용하고 있습니다. 이것은 충분히 독특해야하지만이 방법만으로도 내 PC에서 1800 트랙을 50 초 걸릴 수 있습니다. (I 코드를 업데이트했습니다. MediaLibrary은 실행 가능한 코드를 바로했다.노래 직렬화

List<KeyValuePair<string,string>> kv = new List<KeyValuePair<string,string>>(); 

List<Song> chosenSongs = new List<Song>(); 
//...code to add to chosenSongs 

var songs = chosenSongs; 
// var songs = new MediaLibrary().Songs; 

for(int i = 0; i < songs.Count; i++) 
{ 
    kv.Add(new KeyValuePair<string, string>(songs[i].Name, songs[i].Artist.ToString())); 
} 

이 너무 느리고 아직 진행되고에는 직렬화가 없습니다. 있나요 형 노래의 객체 직렬화의 더 나은 방법?

+3

왜 노래를 직렬화해야합니까? 목록에 시간이 걸리는 것이 확실한가요? 특히 MediaLibrary(). Songs에 대한 호출 인 것으로 기대합니다. 특히 많은 경우가 있습니다. –

+0

'KeyValuePair'를'List'에 추가 할 때 나쁜 성능이 발생 했습니까? – Fendy

+0

그렇게하려면 50 초가 걸립니다. 응용 프로그램이 디스크에서 해당 정보를 읽으므로 가능성이 있습니다. 메모리에있는 1800 개의 KVP 목록을 만드는 데는 50 초가 걸리지 않습니다. –

답변

1

코드에서 Song의 다양한 속성을 얻고 있습니다. PC에서 디스크를 읽는 것이 좋습니다 (기본적으로 네트워크 미디어 라이브러리를 선택할 수 있음). 근본적으로 느린 속도가 될 때가 있습니다.

가장 좋은 방법은 작업을 수행 할 수 있도록 UI를 구성하는 것입니다. 펼치기, 즉 사용자가 그것을 선택하면 각 노래의 정보를로드 할 수 있습니다.