2010-05-23 36 views
11

¿Cuál es la diferencia entre Process y ProcessStartInfo? He usado ambos para lanzar programas externos, pero tiene que haber una razón por la cual hay dos formas de hacerlo. Aquí hay dos ejemplos.¿Cuál es la diferencia entre Process y ProcessStartInfo en C#?

Process notePad = new Process(); 
notePad.StartInfo.FileName = "notepad.exe"; 
notePad.StartInfo.Arguments = "ProcessStart.cs"; 
notePad.Start(); 

y

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "notepad.exe"; 
startInfo.Arguments = "ProcessStart.cs"; 
Process.Start(startInfo); 

Respuesta

6

Son bastante cerca de la misma, ambos son de la clase de proceso. Y en realidad hay 4 other overloads to Process.Start además de lo que mencionaste, todo estático.

Uno es un static method forma de hacerlo. Devuelve el objeto de proceso que representa el proceso que se inicia. Por ejemplo, podría comenzar un proceso con una sola línea de código usando esta forma.

Y la otra es una forma member method para hacerlo que reutiliza el objeto actual en lugar de devolver uno nuevo.

2

Heh.

Si observa detenidamente su código, notará que ambos utilizan las mismas clases. La propiedad StartInfo en su primer ejemplo es, insuperablemente, una ProcessStartInfo. En su segundo ejemplo, llame al método estático .Starten la clase Process.

¿Cuáles son las diferencias? Significativo. Son clases diferentes. Uno es para iniciar procesos, uno es para decir qué proceso lanzar (y muchas otras cosas pequeñas, como capturar resultados, etc.). En el primer caso, solo usa la propiedad predeterminada ProcessStartInfo que tiene la clase.

Cuestiones relacionadas