示例#1
0
        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);
            }
        }
示例#2
0
 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);
 }