Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连载歌曲类_C#_Serialization_Xna_Media Player - Fatal编程技术网

C# 连载歌曲类

C# 连载歌曲类,c#,serialization,xna,media-player,C#,Serialization,Xna,Media Player,我有一份工作清单。我需要存储此列表以便以后加载,但由于没有内置唯一ID,我只使用存储曲目标题和艺术家的KeyValuePair。这应该足够独特,但仅此方法就需要50秒才能在我的PC上播放1800首曲目。(我已经更新了代码。mediablibrary仅用于可运行的代码 List<KeyValuePair<string,string>> kv = new List<KeyValuePair<string,string>>(); List<Son

我有一份工作清单。我需要存储此列表以便以后加载,但由于没有内置唯一ID,我只使用存储曲目标题和艺术家的
KeyValuePair
。这应该足够独特,但仅此方法就需要50秒才能在我的PC上播放1800首曲目。(我已经更新了代码。
mediablibrary
仅用于可运行的代码

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()));
}
List kv=新列表();
List chosenSongs=新列表();
//…要添加到chosenSongs的代码
var songs=chosenSongs;
//var songs=新媒体库()。歌曲;
for(int i=0;i

这太慢了,而且还没有进行序列化。有没有更好的方法序列化Song类型的对象?

在代码中,您可以获得Song的各种属性。我敢肯定,这会导致PC上读取磁盘(最多,您可以选择网络媒体库),这基本上是缓慢的,当你有数千人通过


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

为什么需要序列化歌曲?您确定要添加到列表中需要花费时间吗,我希望这是对
MediaLibrary()的调用.Songs
,特别是如果有很多。您确定在将
KeyValuePair
添加到
List
时会导致性能不佳吗?如果这样做需要50秒,很可能是因为应用程序正在从磁盘读取该信息。无法在内存中创建1800 KVPs的列表需要50秒。@GeorgeDuckett-用户可以创建歌曲的播放列表。据我所知,无法允许用户保存此播放列表(这是一个歌曲列表)。上面的示例只是可以运行的,但实际上是
MediaLibrary()。不会使用歌曲。
。(我将更新问题以使其更清楚)请注意,根据MSDN的说法,
SongsCollection
(由
Songs
方法返回)是惰性的,这意味着它在您请求之前不会加载歌曲。因此,可能是
新的KeyValuePair
行速度较慢,但这只是因为您正在访问歌曲(也就是说,不是插入列表太慢,而是访问歌曲)。