void OnConsoleInput(object sender, ConsoleInputEventArgs e) { if (string.IsNullOrEmpty(e.Text)) { WritePrompt(); return; } if (expression == null) { expression = e.Text; } else { expression += "\n" + e.Text; } Task.Run(() => { try { IsStopButtonEnabled = true; using (var consoleOutputWriter = ConsoleOutputTextWriter.Create(logTextWriter)) { expression = Evaluate(expression); } } finally { WritePrompt(); IsStopButtonEnabled = false; } }).Ignore(); }
public static ConsoleOutputTextWriter Create(TextWriter outputWriter, TextWriter errorWriter) { var consoleOutputWriter = new ConsoleOutputTextWriter(Console.Out, Console.Error); ReplaceConsoleWriters(outputWriter, errorWriter); return(consoleOutputWriter); }