public void ReloadNews() { Task.Run(async() => { this.newsLoaded = false; this.headlines = await Headlines.Get(this.app.Launcher, this.app.Settings.ClientLanguage ?? ClientLanguage.English).ConfigureAwait(false); this.banners = new TextureWrap[this.headlines.Banner.Length]; var client = new HttpClient(); for (var i = 0; i < this.headlines.Banner.Length; i++) { var textureBytes = await client.GetByteArrayAsync(this.headlines.Banner[i].LsbBanner).ConfigureAwait(false); this.banners[i] = TextureWrap.Load(textureBytes); } this.newsLoaded = true; }); }
private void SetupHeadlines() { try { _bannerChangeTimer?.Stop(); _headlines = Headlines.Get(_launcher, App.Settings.Language.GetValueOrDefault(ClientLanguage.English)); _bannerBitmaps = new BitmapImage[_headlines.Banner.Length]; for (var i = 0; i < _headlines.Banner.Length; i++) { var imageBytes = _launcher.DownloadAsLauncher(_headlines.Banner[i].LsbBanner.ToString(), App.Settings.Language.GetValueOrDefault(ClientLanguage.English)); using var stream = new MemoryStream(imageBytes); var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = stream; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); bitmapImage.Freeze(); _bannerBitmaps[i] = bitmapImage; } Dispatcher.BeginInvoke(new Action(() => { BannerImage.Source = _bannerBitmaps[0]; })); _bannerChangeTimer = new Timer { Interval = 5000 }; _bannerChangeTimer.Elapsed += (o, args) => { if (_currentBannerIndex + 1 > _headlines.Banner.Length - 1) { _currentBannerIndex = 0; } else { _currentBannerIndex++; } Dispatcher.BeginInvoke(new Action(() => { BannerImage.Source = _bannerBitmaps[_currentBannerIndex]; })); }; _bannerChangeTimer.AutoReset = true; _bannerChangeTimer.Start(); Dispatcher.BeginInvoke(new Action(() => { NewsListView.ItemsSource = _headlines.News; })); } catch (Exception) { Dispatcher.BeginInvoke(new Action(() => { NewsListView.ItemsSource = new List <News> { new News { Title = Loc.Localize("NewsDlFailed", "Could not download news data."), Tag = "DlError" } }; })); } }
private void SetupHeadlines() { try { _bannerChangeTimer?.Stop(); _headlines = Headlines.Get(_game); _bannerBitmaps = new BitmapImage[_headlines.Banner.Length]; for (var i = 0; i < _headlines.Banner.Length; i++) { var imageBytes = _game.DownloadAsLauncher(_headlines.Banner[i].LsbBanner.ToString()); using (var stream = new MemoryStream(imageBytes)) { var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = stream; bitmapImage.CacheOption = BitmapCacheOption.OnLoad; bitmapImage.EndInit(); bitmapImage.Freeze(); _bannerBitmaps[i] = bitmapImage; } } Dispatcher.BeginInvoke(new Action(() => { BannerImage.Source = _bannerBitmaps[0]; })); _bannerChangeTimer = new Timer { Interval = 5000 }; _bannerChangeTimer.Elapsed += (o, args) => { if (_currentBannerIndex + 1 > _headlines.Banner.Length - 1) { _currentBannerIndex = 0; } else { _currentBannerIndex++; } Dispatcher.BeginInvoke(new Action(() => { BannerImage.Source = _bannerBitmaps[_currentBannerIndex]; })); }; _bannerChangeTimer.AutoReset = true; _bannerChangeTimer.Start(); Dispatcher.BeginInvoke(new Action(() => { NewsListView.ItemsSource = _headlines.News; })); } catch (Exception) { Dispatcher.BeginInvoke(new Action(() => { NewsListView.Items.Add(new News { Title = "Could not download news data.", Tag = "DlError" }); })); } }