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