Gast
#2856139
Hallo, ich starte von meiner C# Anwendung aus eine Eingabeaufforderung, in welche ich über ein WriteLine dann diverse Commandos schreibe. Nun sind die Ausgaben nicht immer gleich lang, womit sich ReadLine aufhängt wenn nichts mehr abzuholen ist bzw. halt auf eine Eingabe in der cmd wartet. Lesen bis Ende funktioniert auch nicht, da ja keins existiert. Der Versuch ein Timeout zu setzen ist daran gescheitert, dass dies cmd nicht unterstützt. Wie wird so was denn klassicherweise gemacht, das problem gibt es ja bestimmt auch noch mit anderen Programmen. Meine Lösungsideen (finde ich jeweils nicht schön): 1. Am Ende ein Sonderzeichen hinterherschicken z.B. ein å (gesprochen o) welches eher nicht in einer Ausgabe zu erwarten ist als bessere Option. 2. Einen zweiten Thread aufmachen, welcher überprüft ob der andere sich aufgehangen hat und evtl. einfach ein beenden Flag setzt und eine neue Zeile erzeugt. 3. Über einen Kill-Thread den anderen vernichten, sollte er sich nicht zurückmelden. Allerdings wird dann die Anfrage sauber aufgelöst? 4. Alle Befehle direkt über C# ausführen, dann aber immer noch nicht sicher das es klappt und nicht wieder der gleiche Effekt auftritt.