Hallo,
ich habe eine Klasse, in der ein Prozess aufgerufen wird, mit dem über
Stdin und Stdout gequatscht wird.
Wenn ich nun eine Nachricht schicke, etwa
1 | process.StandardInput.WriteLine("ping");
|
dann kommt per event nach sehr kurzer Zeit eine Antwort
1 | private void process_OutputDataReceived(object sender, DataReceivedEventArgs e)
|
2 | {
|
3 | Console.WriteLine("Ping erfolgreich");
|
4 | }
|
Nun möchte ich aber nach dem abschicken in einer while Schleife auf die
Antwort warten.
1 | volatile bool pingReceived;
|
2 | WaitForPing()
|
3 | {
|
4 | pingReceived = false;
|
5 | process.StandardInput.WriteLine("ping");
|
6 | while(!pingReceived) ;
|
7 | }
|
8 |
|
9 | process_OutputDataReceived(object sender, DataReceivedEventArgs e)
|
10 | {
|
11 | pingReceived = true;
|
12 | }
|
Allerdings warte ich bis heute auf die Pingantwort. Sehe ich es somit
richtig, dass ein Process immer ein untergeordneter Thread ist, der nur
arbeiten darf, wenn der übergeordnete Thread ihn lässt? Da der
Hauptthread nichts anderes macht, als eine boolsche Variable abzufragen
find ich es schon ein bisschen schwach, dass mein Prozess keinen
einzigen Taktzyklus abbekommmt. Habe ich etwas übersehen, kann man da
noch irgendwo was einstellen?