BitmapImage SetSource Crashing / Freezing App

时间:2014-05-29 03:40:25

标签: windows-runtime taglib bitmapimage windows-phone-8.1

我正在尝试从流中设置图像。但是,当我从后台线程设置源并使用调度程序时,它会完全冻结应用程序。该流不为空,我已经验证过。

我正在使用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);
   }
}

1 个答案:

答案 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线程。 ...