private async void RunTplQuery() { if (_running) { return; } try { _running = true; var query = Tpl.Create(_textBox.Text, out IReadOnlyList <LogMessage> parseErrors); if (query == null) { errorPane.Visibility = Visibility.Visible; errorListBox.ItemsSource = parseErrors.Select(e => $"{e.Message}. Line: {e.Location.Line}, Col: {e.Location.Column}"); } else { errorPane.Visibility = Visibility.Collapsed; Console.WriteLine("Pipeline Created"); //Execute ProcessingOverlay.Visibility = Visibility.Visible; textBoxHolder.Visibility = Visibility.Hidden; var sw = new System.Diagnostics.Stopwatch(); sw.Start(); var results = await Task.Run(() => query.Process()); sw.Stop(); TimeTextBlock.Text = sw.ElapsedMilliseconds + "ms"; var resultWindow = new ResultsGridWindow(); resultWindow.InitDataGrid(results); resultWindow.Owner = this; resultWindow.Show(); } } catch (Exception e) { errorPane.Visibility = Visibility.Visible; errorListBox.ItemsSource = new List <string>() { e.Message }; File.WriteAllText("Error.txt", e.ToString()); } finally { _running = false; textBoxHolder.Visibility = Visibility.Visible; ProcessingOverlay.Visibility = Visibility.Hidden; } }