В чем разница между Process и ProcessStartInfo в C #? - PullRequest
13 голосов
/ 23 мая 2010

В чем разница между Process и ProcessStartInfo? Я использовал оба для запуска внешних программ, но должна быть причина, по которой есть два способа сделать это. Вот два примера.

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

и

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

Ответы [ 2 ]

7 голосов
/ 23 мая 2010

Они очень похожи, оба из класса Process. И на самом деле 4 других перегрузок для Process.Start кроме того, что вы упомянули, все статические.

Один из них - статический метод способ сделать это. Возвращает объект Process, представляющий запущенный процесс. Вы можете, например, запустить процесс с одной строкой кода, используя этот способ.

А другой - это метод-член способ сделать это, который использует текущий объект вместо возврата нового.

3 голосов
/ 23 мая 2010

Хех.

Если вы внимательно посмотрите на свой код, вы заметите, что они оба используют одни и те же классы. Свойство StartInfo в вашем первом примере, безусловно, является ProcessStartInfo. Во втором примере вы вызываете статический метод .Start для класса Process.

Так в чем же различия? Значительное. Они разные классы. Один для запуска процессов, другой для того, чтобы сказать, какой процесс запустить (и много других мелочей, таких как захват результатов и т. Д.) В первом случае вы просто используете свойство ProcessStartInfo по умолчанию, которое имеет класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...