Exemplo n.º 1
0
        private static async Task EnsureFilesAsync(Uri uri)
        {
            DateTime expirationDate = DateTime.Now.Subtract(CacheDuration);

            var cacheFolder = await GetCacheFolderAsync();

            string fileName = BuildFileName(uri, MAXRESOLUTION, MAXRESOLUTION);
            StorageFile mainFile = await cacheFolder.TryGetItemAsync(fileName) as StorageFile;
            if (await IsFileOutOfDate(mainFile, expirationDate))
            {
                mainFile = await cacheFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                if (!await BitmapTools.DownloadImageAsync(mainFile, uri, MAXRESOLUTION, MAXRESOLUTION))
                {
                    await mainFile.DeleteAsync();
                    return;
                }
            }

            fileName = BuildFileName(uri, MIDRESOLUTION, MIDRESOLUTION);
            var resizedFile = await cacheFolder.TryGetItemAsync(fileName) as StorageFile;
            if (await IsFileOutOfDate(resizedFile, expirationDate))
            {
                resizedFile = await cacheFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                try
                {
                    await BitmapTools.ResizeImageUniformAsync(mainFile, resizedFile, MIDRESOLUTION, MIDRESOLUTION);
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                    await resizedFile.DeleteAsync();
                }
            }
        }
Exemplo n.º 2
0
        private static async Task EnsureFilesAsync(Uri uri)
        {
            DateTime expirationDate = DateTime.Now.Subtract(CacheDuration);

            var folder = await GetCacheFolderAsync();

            string fileName = BuildFileName(uri, MAX_RESOLUTION, MAX_RESOLUTION);
            var    baseFile = await folder.TryGetItemAsync(fileName) as StorageFile;

            if (await IsFileOutOfDate(baseFile, expirationDate))
            {
                baseFile = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

                if (!await BitmapTools.DownloadImageAsync(baseFile, uri, MAX_RESOLUTION, MAX_RESOLUTION))
                {
                    await baseFile.DeleteAsync();

                    return;
                }
            }

            fileName = BuildFileName(uri, 960, 960);
            var file = await folder.TryGetItemAsync(fileName) as StorageFile;

            if (await IsFileOutOfDate(file, expirationDate))
            {
                file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

                try
                {
                    await BitmapTools.ResizeImageUniformAsync(baseFile, file, 960, 960);
                }
                catch
                {
                    await file.DeleteAsync();

                    return;
                }
            }
            baseFile = file;
        }