public override void Close()
 {
     base.Close();
     if (process != null)
     {
         if (!process.HasExited)
         {
             streamingChannel.Close();
             if (!process.HasExited)
             {
                 try {
                     process.CloseMainWindow();
                     process.WaitForExit(1000);
                     process.Close();
                 } catch { }
             }
             // for some reasons the event process_Exited does not fire
             OnProcessExited();
         }
         process = null;
     }
 }