2010-03-01 15 views
6

Estoy usando VSTS 2008 + C# + .Net 3.5 para desarrollar una aplicación de consola. Y quiero comenzar un proceso externo (un archivo exe) desde mi aplicación C#, y quiero que la aplicación C# actual se bloquee hasta que se detenga el proceso externo y también quiero obtener el código de retorno del proceso externo.start process issue

¿Alguna idea de cómo implementar esto? Apreciar si algunos códigos de muestra.

Respuesta

9
using (var process = Process.Start("test.exe")) 
{ 
    process.WaitForExit(); 
    var exitCode = process.ExitCode; 
} 
+1

Agregando un poco de código de control de excepciones puede hacerlo mejor. :) –

+1

También envolver el 'proceso' en un bloque' using' ayudaría :) – GSerg

2
public static String ShellExec(String pExeFN, String pParams, out int exit_code) 
    { 
     System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(pExeFN, pParams); 
     psi.RedirectStandardOutput = true; 
     psi.UseShellExecute = false; // the process is created directly from the executable file 
     psi.CreateNoWindow = true; 

     using (System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi)) 
     { 
      string tool_output = p.StandardOutput.ReadToEnd(); 
      p.WaitForExit(); 
      exit_code = p.ExitCode; 

      return tool_output; 
     } 
    }