Между чем различие 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);
Они довольно близки к одному и тому же, оба относятся к классу Process. И на самом деле есть 4 других перегрузки для Process.Start , кроме упомянутых вами, все статические.
Один из них - это статический метод . Он возвращает объект Process, представляющий запущенный процесс. Вы можете, например, запустить процесс с помощью одной строчки кода, используя этот способ.
А другой способ сделать это методом-членом , который повторно использует текущий объект вместо того, чтобы возвращать новый.
Хех.
Если вы внимательно посмотрите на свой код, вы заметите, что оба они используют одни и те же классы. Свойство StartInfo
в вашем первом примере, естественно, является ProcessStartInfo
. Во втором примере вы вызываете статический метод .Start
для класса Process
.
Так в чем же различия? Существенный. Это разные классы. Один предназначен для запуска процессов, второй - для указания, какой процесс запускать (и множество других мелочей, таких как захват вывода и т. Д.). В первом случае вы просто используете свойство по умолчанию ProcessStartInfo
, которое имеет класс.