2010-05-23 5 views
11

Was ist der Unterschied zwischen Process und ProcessStartInfo? Ich habe beide verwendet, um externe Programme zu starten, aber es muss einen Grund geben, dass es zwei Möglichkeiten gibt, dies zu tun. Hier sind zwei Beispiele.Was ist der Unterschied zwischen Process und ProcessStartInfo in C#?

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

und

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

Antwort

6

Sie sind ziemlich nah an den gleichen, beide sind von der Process-Klasse. Und es gibt tatsächlich 4 other overloads to Process.Start andere als das, was Sie erwähnt haben, alle statisch.

Einer ist ein static method Weg, es zu tun. Sie gibt das Process-Objekt zurück, das den gestarteten Prozess darstellt. Sie könnten beispielsweise einen Prozess mit einer einzelnen Codezeile starten, indem Sie diesen Weg verwenden.

Und das andere ist ein member method Weg, es zu tun, der das aktuelle Objekt wiederverwendet, anstatt ein neues zurückzugeben.

2

Heh.

Wenn Sie sich Ihren Code genau ansehen, werden Sie feststellen, dass beide die gleichen Klassen verwenden. Die StartInfo-Eigenschaft in Ihrem ersten Beispiel ist ProcessStartInfo ungeschlagen. In Ihrem zweiten Beispiel rufen Sie die statische .Start Methode auf die Process Klasse.

Was sind die Unterschiede? Von Bedeutung. Sie sind verschiedene Klassen. Einer ist für den Start von Prozessen, einer für das Sagen, welcher Prozess gestartet werden soll (und viele andere kleine Dinge, wie das Erfassen von Ausgaben usw.). Im ersten Fall verwenden Sie einfach die Standardeigenschaft ProcessStartInfo, die die Klasse hat.

Verwandte Themen