public override void Open()
 {
     if (!String.IsNullOrEmpty(executable.Trim()))
     {
         base.Open();
         process           = new Process();
         process.StartInfo = new ProcessStartInfo(executable, arguments);
         process.StartInfo.UseShellExecute        = false;
         process.StartInfo.RedirectStandardInput  = true;
         process.StartInfo.RedirectStandardOutput = true;
         process.EnableRaisingEvents = true; // required to be notified of exit
         process.Start();
         Stream processStdOut = process.StandardOutput.BaseStream;
         Stream processStdIn  = process.StandardInput.BaseStream;
         OnProcessStarted();
         process.Exited  += new EventHandler(process_Exited);
         streamingChannel = new EvaluationStreamChannel(processStdOut, processStdIn);
         streamingChannel.Open();
     }
     else
     {
         throw new InvalidOperationException(Name + ": Cannot open the process channel because the executable is not defined.");
     }
 }
 protected EvaluationStreamChannel(EvaluationStreamChannel original, Cloner cloner) : base(original, cloner)
 {
 }
 protected EvaluationStreamChannel(EvaluationStreamChannel original, Cloner cloner) : base(original, cloner) { }
 public override void Open() {
   if (!String.IsNullOrEmpty(executable.Trim())) {
     base.Open();
     process = new Process();
     process.StartInfo = new ProcessStartInfo(executable, arguments);
     process.StartInfo.UseShellExecute = false;
     process.StartInfo.RedirectStandardInput = true;
     process.StartInfo.RedirectStandardOutput = true;
     process.EnableRaisingEvents = true; // required to be notified of exit
     process.Start();
     Stream processStdOut = process.StandardOutput.BaseStream;
     Stream processStdIn = process.StandardInput.BaseStream;
     OnProcessStarted();
     process.Exited += new EventHandler(process_Exited);
     streamingChannel = new EvaluationStreamChannel(processStdOut, processStdIn);
     streamingChannel.Open();
   } else throw new InvalidOperationException(Name + ": Cannot open the process channel because the executable is not defined.");
 }