private async void NextImage(ThreadPoolTimer timer) { if (_firstTimer) { timer.Cancel(); _timer1 = null; _firstTimer = false; } // get next image var image = await _reader.GetImage(); if (image != null) { // we have to update UI in UI thread only await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => ShowImage(image) ); } if (_timer1 == null) { _timer1 = ThreadPoolTimer.CreatePeriodicTimer(NextImage, TimeSpan.FromSeconds(18)); } // cleanup BmpCache.Cleanup(); }
private void ShowImage(string imageUri) { // check cache if (!BmpCache.Cache.TryGetValue(imageUri, out BmpCache cacheItem)) { cacheItem = new BmpCache { Uri = imageUri, LastShownUtc = DateTime.UtcNow, Bitmap = new BitmapImage { UriSource = new Uri(imageUri, UriKind.Absolute) } }; BmpCache.Cache[cacheItem.Uri] = cacheItem; } // display image cacheItem.LastShownUtc = DateTime.UtcNow; splashImage.Source = cacheItem.Bitmap; }