private async void button_parseRacenetApi_Click(object sender, RoutedEventArgs e) { // check and clean inputs var eventId = textBox_eventId.Text; if (String.IsNullOrWhiteSpace(eventId)) { label_statusMessage.Content = "No event ID"; label_statusMessage.Foreground = Brushes.Red; return; } int eventIdInt; if (!Int32.TryParse(eventId, out eventIdInt)) { label_statusMessage.Content = "Event ID must be an integer"; label_statusMessage.Foreground = Brushes.Red; return; } eventId = eventId.Trim(); // handle URL if it exists var leagueUrl = textBox_leagueUrl.Text; if (!string.IsNullOrWhiteSpace(leagueUrl)) { Properties.Settings.Default.leagueUrl = leagueUrl; Properties.Settings.Default.Save(); } // clear all data rallyData = new Rally(); label_statusMessage.Content = "Data Cleared"; label_statusMessage.Foreground = Brushes.Green; textBox_resultsInput.Clear(); // progess reporting from task var progress = new Progress <int>(stagesProcessed => { label_statusMessage.Content = "Fetching data from Racenet... " + stagesProcessed + " stages retrieved "; label_statusMessage.Foreground = Brushes.Green; }); // run task to get data var getDataTask = Task <Rally> .Factory.StartNew(() => racenetApiParser.GetRallyData(leagueUrl, eventId, progress)); label_statusMessage.Content = "Fetching data from Racenet (be patient, Racenet is slow)..."; label_statusMessage.Foreground = Brushes.Green; await getDataTask; rallyData = getDataTask.Result; // crunch numbers if (rallyData == null) { label_statusMessage.Content = "Failed to get data from Racenet"; label_statusMessage.Foreground = Brushes.Red; } else { rallyData.CalculateTimes(); label_statusMessage.Content = rallyData.StageCount + " stages retrieved from Racenet, numbers crunched sucessfully"; label_statusMessage.Foreground = Brushes.Green; } }
private void button_crunchNumbers_Click(object sender, RoutedEventArgs e) { rallyData.CalculateTimes(); label_statusMessage.Content = "Numbers Crunched"; label_statusMessage.Foreground = Brushes.Green; }