C++ @VS2008: Diagnostics.Process-Objekt - Prozess starten und auf Ende warten

LeChris

Vice Admiral Pro
Registriert
Dez. 2002
Beiträge
7.121
Mahlzeit,

zwecks Zeitmessung will ich aus einer kleinen Anwendung heraus eine Batch-Datei starten und auf deren Ende warten. Folgendes Konstrukt tut das fast auch schon:

Code:
[...]
System::Diagnostics::Process^ batchProcess = gcnew System::Diagnostics::Process();
[...]
stopWatch->Start();

batchProcess->Start(PathToBatch);
batchProcess->WaitForExit();

stopWatch->Stop();
[...]
In meinem jugendlichen (hüstel...;)) Leichtsinn hatte ich gedacht, mit der Start-Methode wird mein batchProcess-Objekt schon mit dem entsprechendem Prozess verknüpft, aber WaitForExit() stoppt mit der Beschwerde, dem Objekt sei kein Prozess zugeordnet. ("System.InvalidOperationException")

Randerklärung: mit dem stopWatch-Objekt der gleichnamigen Klasse lasse ich mir einen Wert zurückgeben, der wohl der verstrichenen Zeit in Millisekungen zwischen den Start- und Stop-Methoden entspricht.

Wie kann ich meinem Objekt nun beibringen, sich auch gefälligst auf den gestarteten Prozess zu beziehen?


Update:

In den Tiefen des MSDN bin ich doch noch fündig geworden: die Process-Klasse inkludiert eine Eigenschaft "StartInfo", in der unter anderem der Name der auszuführenden Datei zu hinterlegen ist. Daran indentifizieren dann auch alle Methoden den passenden Prozess. Ein funktionierender Aufruf wäre als z.B.:

Code:
batchProcess->StartInfo->FileName = PathToBatch;
batchProcess->Start();
batchProcess->WaitForExit();
 
Zuletzt bearbeitet: (Update mit Lösung :/)
Es gibt im Framework nen event im Process das "Exited" heißt versuchs damit mal :)
 
Zurück
Oben