private async Task <BitmapImage> LoadPageCacheObjectThumbnailImage(PageCacheObject PageCacheObject) { BitmapImage ThumbnailImage = null; if (Equals(PageCacheObject.ThumbnailImage, null)) { try { Stream ThumbnailImageStream = await App.CORE.ZipManager.ReadAsync(ChapterArchiveFilePath, PageCacheObject.PageObject.Name).Retry(TIMEOUT); if (!Equals(ThumbnailImageStream, null)) { using (ThumbnailImageStream) { ThumbnailImage = new BitmapImage(); ThumbnailImage.BeginInit(); ThumbnailImage.DecodePixelWidth = 200; ThumbnailImage.CacheOption = BitmapCacheOption.OnLoad; ThumbnailImage.CreateOptions = BitmapCreateOptions.PreservePixelFormat; using (ThumbnailImage.StreamSource = ThumbnailImageStream) { ThumbnailImage.EndInit(); ThumbnailImage.Freeze(); } } } } catch (OperationCanceledException) { ThumbnailImage = null; } catch (Exception ex) { throw ex; } finally { } } return(ThumbnailImage); }
private async Task <List <PageCacheObject> > LoadPageCacheObjectsAsync() { try { if (!Equals(PageCacheObjectsAsyncCTS, null)) { if (PageCacheObjectsAsyncCTS.Token.CanBeCanceled) { PageCacheObjectsAsyncCTS.Cancel(); } } } catch { } using (PageCacheObjectsAsyncCTS = new CancellationTokenSource()) { List <PageCacheObject> PageCacheObjects = new List <PageCacheObject>(); foreach (PageObject PageObject in ChapterObject.Pages) { PageCacheObject PageCacheObject = new PageCacheObject(MangaObject, ChapterObject, PageObject); PageCacheObject.ThumbnailImage = await LoadPageCacheObjectThumbnailImage(PageCacheObject); PageCacheObjectsAsyncCTS.Token.ThrowIfCancellationRequested(); PageCacheObjects.Add(PageCacheObject); } return(PageCacheObjects); } }