序列化Song类

时间:2013-05-13 14:14:28

标签: c# serialization xna media-player

我有Songs的列表。我需要存储此列表以便以后加载,但由于没有内置的唯一ID,我只使用存储曲目标题和艺术家的KeyValuePair。这应该是足够独特的,但是这个方法在我的电脑上仅需要50秒就能完成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类型的对象?

1 个答案:

答案 0 :(得分:1)

在您的代码中,您获得了Song s的各种属性。我很确定这会导致PC上的磁盘读取(充其量,你可能已经选择了一个网络媒体库),当你有成千上万的时间时,这基本上会很慢。

您最好的选择是尝试构建用户界面,以便分散工作,即在用户选择/按需显示时加载每首歌曲的信息。