diff --git a/Application/FeedErrorWindow.xaml.cs b/Application/FeedErrorWindow.xaml.cs index 270eae0..048ea1f 100644 --- a/Application/FeedErrorWindow.xaml.cs +++ b/Application/FeedErrorWindow.xaml.cs @@ -105,18 +105,27 @@ namespace FeedCenter Close(); } - private void HandleRefreshCurrentButtonClick(object sender, RoutedEventArgs e) + private async void HandleRefreshCurrentButtonClick(object sender, RoutedEventArgs e) { + IsEnabled = false; Mouse.OverrideCursor = Cursors.Wait; var feed = (Feed) FeedDataGrid.SelectedItem; - feed.Read(_database, true); + await feed.ReadAsync(_database, true); + + var selectedIndex = FeedDataGrid.SelectedIndex; _collectionViewSource.View.Refresh(); + if (selectedIndex >= FeedDataGrid.Items.Count) + FeedDataGrid.SelectedIndex = FeedDataGrid.Items.Count - 1; + else + FeedDataGrid.SelectedIndex = selectedIndex; + SetFeedButtonStates(); Mouse.OverrideCursor = null; + IsEnabled = true; } } } diff --git a/Application/Feeds/Feed.cs b/Application/Feeds/Feed.cs index 89c989b..9b709d4 100644 --- a/Application/Feeds/Feed.cs +++ b/Application/Feeds/Feed.cs @@ -8,6 +8,7 @@ using System.Linq; using System.Net; using System.Text; using System.Text.RegularExpressions; +using System.Threading.Tasks; namespace FeedCenter { @@ -93,6 +94,11 @@ namespace FeedCenter return result; } + public async Task ReadAsync(FeedCenterEntities database, bool forceRead = false) + { + return await Task.Run(() => Read(database, forceRead)); + } + private Tuple RetrieveFeed() { try @@ -320,7 +326,7 @@ namespace FeedCenter var lastReadResult = LastReadResult; // Build the name of the resource using the enum name and the value - var resourceName = $"{typeof (FeedReadResult).Name}_{lastReadResult}"; + var resourceName = $"{typeof(FeedReadResult).Name}_{lastReadResult}"; // Try to get the value from the resources var resourceValue = Properties.Resources.ResourceManager.GetString(resourceName);