0
我有一个列表Songs。我需要将此列表存储在以后加载,但由于没有内置唯一ID,因此我只使用存储轨道标题和艺术家的KeyValuePair
。这应该是独一无二的,但是这种方法仅需要50秒就可以在我的PC上播放1800首歌曲。 (我已经更新的代码。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()));
}
这是太慢,而且也没有系列化还正在做。有没有序列化Song类型对象的更好的办法?
为什么你需要序列化歌曲?你确定它会加入到需要时间的列表中,我期望它是对'MediaLibrary()。Songs'的调用,特别是如果有很多。 – 2013-05-13 14:19:02
你确定在将'KeyValuePair'添加到'List'时导致了糟糕的性能吗? – Fendy 2013-05-13 14:20:08
如果需要50秒才能做到这一点;这很可能是因为应用程序正在从磁盘读取该信息。在内存中创建1800 KVP的列表将不会花费50秒。 – 2013-05-13 14:20:41