Pytanie Jaka jest różnica między Process i ProcessStartInfo w C #?


Jaka jest różnica pomiędzy Process i ProcessStartInfo? Używałem obydwu programów do uruchamiania programów zewnętrznych, ale musi istnieć powód, dla którego można to zrobić na dwa sposoby. Oto dwa przykłady.

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

i

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

12
2018-05-23 00:45


pochodzenie




Odpowiedzi:


Są bardzo zbliżone do tego samego, oba pochodzą z klasy Proces. I rzeczywiście tak jest 4 inne przeciążenia do Process.Start poza tym, o czym wspomniałeś, wszystkie statyczne.

Jednym z nich jest metoda statyczna sposób na zrobienie tego. Zwraca obiekt Process reprezentujący rozpoczęty proces. Można na przykład uruchomić proces za pomocą pojedynczej linii kodu za pomocą tej metody.

A drugim jest metoda członka sposób to zrobić, który ponownie wykorzystuje bieżący obiekt zamiast zwracania nowego.


7
2018-05-23 00:52





Heh.

Jeśli przyjrzysz się uważnie Twojemu kodowi, zauważysz, że obie używają tych samych klas. The StartInfo Właściwość w twoim pierwszym przykładzie jest, niezrażenie, a ProcessStartInfo. W twoim drugim przykładzie wywołujesz statyczne .Start metoda na  Process klasa.

Więc jakie są różnice? Znaczący. To są różne klasy. Jednym z nich jest uruchamianie procesów, jednym jest mówienie, który proces ma zostać uruchomiony (i wiele innych drobiazgów, takich jak przechwytywanie danych wyjściowych itp.). W pierwszym przypadku wystarczy użyć wartości domyślnej ProcessStartInfo własność, którą posiada klasa.


2
2018-05-23 00:52