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);
            }
        }