Make feed read on error dialog async and preserve selection

This commit is contained in:
2015-11-16 11:05:55 -05:00
parent 040147cb4a
commit 9a73709c7f
2 changed files with 18 additions and 3 deletions

View File

@@ -105,18 +105,27 @@ namespace FeedCenter
Close(); Close();
} }
private void HandleRefreshCurrentButtonClick(object sender, RoutedEventArgs e) private async void HandleRefreshCurrentButtonClick(object sender, RoutedEventArgs e)
{ {
IsEnabled = false;
Mouse.OverrideCursor = Cursors.Wait; Mouse.OverrideCursor = Cursors.Wait;
var feed = (Feed) FeedDataGrid.SelectedItem; var feed = (Feed) FeedDataGrid.SelectedItem;
feed.Read(_database, true); await feed.ReadAsync(_database, true);
var selectedIndex = FeedDataGrid.SelectedIndex;
_collectionViewSource.View.Refresh(); _collectionViewSource.View.Refresh();
if (selectedIndex >= FeedDataGrid.Items.Count)
FeedDataGrid.SelectedIndex = FeedDataGrid.Items.Count - 1;
else
FeedDataGrid.SelectedIndex = selectedIndex;
SetFeedButtonStates(); SetFeedButtonStates();
Mouse.OverrideCursor = null; Mouse.OverrideCursor = null;
IsEnabled = true;
} }
} }
} }

View File

@@ -8,6 +8,7 @@ using System.Linq;
using System.Net; using System.Net;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace FeedCenter namespace FeedCenter
{ {
@@ -93,6 +94,11 @@ namespace FeedCenter
return result; return result;
} }
public async Task<FeedReadResult> ReadAsync(FeedCenterEntities database, bool forceRead = false)
{
return await Task.Run(() => Read(database, forceRead));
}
private Tuple<FeedReadResult, string> RetrieveFeed() private Tuple<FeedReadResult, string> RetrieveFeed()
{ {
try try
@@ -320,7 +326,7 @@ namespace FeedCenter
var lastReadResult = LastReadResult; var lastReadResult = LastReadResult;
// Build the name of the resource using the enum name and the value // 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 // Try to get the value from the resources
var resourceValue = Properties.Resources.ResourceManager.GetString(resourceName); var resourceValue = Properties.Resources.ResourceManager.GetString(resourceName);