private async Task LoadImages(ImageLoader imageLoader) { // only load images when we are connected if (InternetConnectivity.IsConnected()) { // create Flickr reader var reader = new FlickrReader("unicorn"); //load Flickr images var images = await reader.GetImages(); // store images to database await imageLoader.StoreImages(images); } }
public MainPage() { this.InitializeComponent(); var imageLoader = new ImageLoader(); // start image loading task, don't wait var task = ThreadPool.RunAsync(async (source) => { await LoadImages(imageLoader); }); // schedule image databaase refresh every 20 seconds TimeSpan imageLoadPeriod = TimeSpan.FromSeconds(20); ThreadPoolTimer imageLoadTimes = ThreadPoolTimer.CreatePeriodicTimer( async (source) => { await LoadImages(imageLoader); }, imageLoadPeriod); TimeSpan displayImagesPeriod = TimeSpan.FromSeconds(5); // display new images every five seconds ThreadPoolTimer imageDisplayTimer = ThreadPoolTimer.CreatePeriodicTimer( async (source) => { // get next image (byte aray) from database var imageBytes = imageLoader.GetNextImage(); if (imageBytes != null) { // we have to update UI in UI thread only await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => { // create bitmap from byte array BitmapImage bitmap = new BitmapImage(); MemoryStream ms = new MemoryStream(imageBytes); await bitmap.SetSourceAsync(ms.AsRandomAccessStream()); // display image splashImage.Source = bitmap; } ); } }, displayImagesPeriod); }