Exemple #1
0
        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;
            }
        }