在Windows Phone 8.1运行时获取音乐文件太慢

时间:2015-04-20 04:19:49

标签: c# windows-phone-8 windows-phone-8.1

我正在使用Windows Phone 8.1运行时音乐库中的音乐。但是有问题。这太慢了。在Windows Phone 8.0或8.0 Silverlight中,当我使用Microsoft.Xna.Framework.Media时,速度非常快。在WP 8.1运行时,我不能使用XNA,我必须使用KnownFolders.MusicLibrary。 例如:

App.listMusicFiles = await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);

for (int i = 0; i < App.listMusicFiles.Count; i++)
{
    MusicProperties musicProperties = await App.listMusicFiles[i].Properties.GetMusicPropertiesAsync();
App.listSongs.Add(new DeviceSongModel(i, musicProperties.Title, musicProperties.Artist, App.listMusicFiles[i].Path,     App.listMusicFiles[i].ContentType, musicProperties.Album, musicProperties.Duration.Ticks, ""));

}

非常非常慢。但为什么呢?

1 个答案:

答案 0 :(得分:1)

您所看到的问题可能是因为这一行:

await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);

在封面下,它正在遍历every music file on the entire device,创建每个文件的内存中表示形式,并将表示形式编组回应用程序的流程。

更好的方法是使用await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName,index,batchSize);一次只获取固定大小的一批文件。这将限制返回的文件数量。然后,您可以在后台处理返回的文件,请求下一批。