private static readonly object Locker = new object(); private static volatile BitmapImage _defaultCover; private BitmapImage _cover; public BitmapImage CoverArt { get { return _cover ?? _defaultCover; } set { SetProperty( ref _cover, value ); } } private async Task LoadThumbnailAsync( StorageFile file ) { if ( file == null ) { return; } var thumb = await file.GetThumbnailAsync( ThumbnailMode.MusicView, 192, ThumbnailOptions.UseCurrentScale ); if ( thumb.Type == ThumbnailType.Image ) { var cover = new BitmapImage(); cover.SetSource( thumb ); CoverArt = cover; return; } if ( CoverArt == null ) { lock ( Locker ) { if ( CoverArt == null ) { // some Bitmap manipulation here... InMemoryRandomAccessStream memStream = ... ... var cover = new BitmapImage(); cover.SetSource( memStream ); _defaultCover = cover; OnPropertyChanged( "CoverArt" ); } } } }
InMemoryRandomAccessStream
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)