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