private static async Task LoadCachedTileAsync(Tile tile, Uri uri, string cacheKey) { var cacheItem = await GetCacheAsync(cacheKey).ConfigureAwait(false); var buffer = cacheItem?.Buffer; if (cacheItem == null || cacheItem.Expiration < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached await SetCacheAsync(cacheKey, buffer, GetExpiration(response.MaxAge)).ConfigureAwait(false); } } if (buffer != null && buffer.Length > 0) { var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false); await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); } }
private static async Task LoadCachedTile(Tile tile, Uri uri, string cacheKey) { var cacheItem = Cache.Get(cacheKey) as Tuple <byte[], DateTime>; var buffer = cacheItem?.Item1; if (cacheItem == null || cacheItem.Item2 < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached cacheItem = Tuple.Create(buffer, GetExpiration(response.MaxAge)); Cache.Set(cacheKey, cacheItem, new CacheItemPolicy { AbsoluteExpiration = cacheItem.Item2 }); } } //else System.Diagnostics.Debug.WriteLine($"Cached: {cacheKey}"); if (buffer != null && buffer.Length > 0) { var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false); await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image)); } }
private static async Task LoadCachedTile(Tile tile, Uri uri, string cacheKey) { var cacheItem = await Cache.GetAsync(cacheKey).ConfigureAwait(false); var buffer = cacheItem?.Item1; if (cacheItem == null || cacheItem.Item2 < DateTime.UtcNow) { var response = await ImageLoader.GetHttpResponseAsync(uri).ConfigureAwait(false); if (response != null) // download succeeded { buffer = response.Buffer; // may be null or empty when no tile available, but still be cached await Cache.SetAsync(cacheKey, buffer, GetExpiration(response.MaxAge)).ConfigureAwait(false); } } //else System.Diagnostics.Debug.WriteLine($"Cached: {cacheKey}"); if (buffer != null && buffer.Length > 0) { await SetTileImage(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false); } }