我正在尝试从流中设置图像。但是,当我从后台线程设置源并使用调度程序时,它会完全冻结应用程序。该流不为空,我已经验证过。
我正在使用taglib api来获取mp3文件的专辑图片流。我已经尝试了一切。
async void Background(object sender, MediaPlayerDataReceivedEventArgs e)
{
IRandomAccessStream AlbumArtStream = await Media.GetAlbumArt(MediaFile.Name, await MediaFile.OpenStreamForReadAsync());
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
ViewModel.NewAlbumArt = new BitmapImage();
NewAlbumArt.SetSource(AlbumArtStream);
}
}
答案 0 :(得分:1)
与评论一样 - 为防止冻结您的应用,请致电SetSoruceAsync
:
async void Background(object sender, MediaPlayerDataReceivedEventArgs e)
{
IRandomAccessStream AlbumArtStream = await Media.GetAlbumArt(MediaFile.Name, await MediaFile.OpenStreamForReadAsync());
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
ViewModel.NewAlbumArt = new BitmapImage();
await NewAlbumArt.SetSourceAsync(AlbumArtStream);
}
}
您可以阅读更多at MSDN:
通过调用异步SetSourceAsync方法而不是类似的SetSource方法来设置图像源可以避免阻塞UI线程。 ...