+ async private Task GetRemoteDataAndUpdateUI(Location locationItem)
+ {
+ // Load remote data (aynchronous way by means of async/await)
+ try
+ {
+ // Without ConfigureAwait(false) await returns data on the calling thread.
+ WeatherData weatherData = await GetRemoteDataAsync(locationItem);
+
+ this.CurrentData.Visibility = Visibility.Visible;
+ this.ForecastData.Visibility = Visibility.Visible;
+ this.ProgressBarRemoteData.Visibility = Visibility.Collapsed;
+ this.NoDataAvailable.Visibility = Visibility.Collapsed;
+
+ UpdateUI(weatherData);
+
+ (Application.Current as WeatherInformation.App).ApplicationDataObject = weatherData;
+
+ using (var db = new LocationDataContext(LocationDataContext.DBConnectionString))
+ {
+ locationItem = db.Locations.Where(location => location.IsSelected).FirstOrDefault();
+ locationItem.LastRemoteDataUpdate = DateTime.UtcNow;
+ db.SubmitChanges();
+ }
+ }
+ catch(Exception e)
+ {
+ // Empty UI and show error message
+ this.CurrentData.Visibility = Visibility.Collapsed;
+ this.ForecastData.Visibility = Visibility.Collapsed;
+ this.ProgressBarRemoteData.Visibility = Visibility.Collapsed;
+ this.NoDataAvailable.Visibility = Visibility.Visible;
+ }
+
+ }
+