Invalid Operation-Ausnahme von C# Process-Klasse
Wenn ich VSTS debugger, um die Eigenschaften der Instanz der Klasse Process
viele der Eigenschaften sind gekennzeichnet mit InvalidOperationException
. Warum? Mache ich etwas falsch?
Ich bin mit VSTS 2008 + C# + .Net 2.0 zu entwickeln, um eine Konsole-Anwendung.
Hier ist mein code:
System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "IExplore.exe";
myProcess.StartInfo.Arguments = @"www.google.com";
myProcess.StartInfo.Verb = "runas";
myProcess.Start();
Und einen screenshot des Debuggers:
InformationsquelleAutor der Frage George2 | 2009-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hatte Sie tatsächlich begann der Prozess, wenn der debugger Bild aufgenommen wurde? Das ist das Bild, ich würde erwarten, zu sehen, bevor die
Start()
- Methode aufgerufen wird.Beachten Sie, dass das häufigste Muster ist das erstellen eines
ProcessStartInfo
füllen Sie es, und rufen Sie die statischeProcess.Start(startInfo)
Methode. Das macht es konzeptionell einfacher: sehen Sie nicht dieProcess
Objekt, bis es gestartet ist.InformationsquelleAutor der Antwort Jon Skeet
Ja, dies ist das erwartete Verhalten, und es ist klar dokumentiert in der MSDN als auch.
Zum Beispiel, der Prozess.BasePriority Eigenschaft kann wirft eine InvalidOperationException-Ausnahme, wenn der Prozess beendet wurde oder der Prozess wurde nicht gestartet (weitere details finden Sie in MSDN).
InformationsquelleAutor der Antwort Chansik Im
Viele der Eigenschaften sind gekennzeichnet mit InvalidOperationException, weil, bis Sie den Prozess zu starten . Das Objekt "myProcess" ist nicht im Zusammenhang mit einem Laufenden Prozess und daher ist es nicht die Informationen bekommen.
Versuchen Sie, diese Aussagen, nachdem Sie den code um den Vorgang zu starten
Nun, wenn du innerhalb der if-Anweisung, die VSTS debugger in der Lage sein zu zeigen, Eigenschaften, die dem Objekt zugeordnet myProcess. Dies geschieht, weil, myProcess Objekt ist jetzt im Zusammenhang mit einem Laufenden Prozess "IExplore.exe".
InformationsquelleAutor der Antwort Pradeep Kumar