private void startExecutingTask(Tasks.TaskRow task) { Process process = null; TextBlockErrorOutput.Text = string.Empty; TextBlockOutput.Text = string.Empty; try { process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo { FileName = task.FileName, WorkingDirectory = Environment.ExpandEnvironmentVariables(task.WorkingDirectory), Arguments = task.Arguments, UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, RedirectStandardOutput = true, RedirectStandardError = true }; process.StartInfo = startInfo; process.EnableRaisingEvents = true; process.Start(); events.AddTaskLog(task.ID, EventTypes.TaskStarted, task.Title); } catch (Exception ex) { events.AddTaskLog(task.ID, EventTypes.TaskStartError, task.Title + ": " + ex.Message); TextBlockErrorOutput.Text += ex.Message; } try { string output = process.StandardOutput.ReadToEnd(); TextBlockOutput.Text = output; string err = process.StandardError.ReadToEnd(); TextBlockErrorOutput.Text = err; Console.WriteLine(err); process.WaitForExit(); events.AddTaskLog(task.ID, EventTypes.TaskCompleted, task.Title); } catch (Exception ex) { TextBlockErrorOutput.Text += ex.Message; events.AddTaskLog(task.ID, EventTypes.TaskProcessError, task.Title + ": " + ex.Message); } }
private void Button_Click(object sender, RoutedEventArgs e) { Tasks.TaskRow task = (Tasks.TaskRow)((System.Data.DataRowView)((FrameworkElement)sender).DataContext).Row; events.AddTaskLog(task.ID, EventTypes.TaskStartRequested, task.Title); startExecutingTask(task); }