mordillo
Mitglied
Hallo,
ich hab ein kleines Programm geschrieben, welches eine Konsolenanwendung startet und die Ausgaben des Konsolenprogramms über einen StreamReader in mein Programm holt.
Code dazu:
Wenn die Konsolendatei also gestartet wurde wird ein Timer gestartet, der folgende Funktion aufruft:
Soweit so gut, aber: Sobald die gestartete Konsolenanwendung einmal keine Meldung hintereinander ausgibt, bleibt der StdOut.Peek auf -1, obwohl neue Zeilen in der Konsole hinzugekommen sind.
Entferne ich das 'If StdOut.Peek > -1 then' liest die Funktion zwar so wie sie soll, aber meine Anwendung reagiert nicht mehr, ausser das die aktualisierten Konsolenmeldungen weiterhin und korrekt angezeigt werden.
Das die Anwendung einfriert ist logisch, da die ' ConsoleRead = StdOut.ReadLine()' dort stehenbleibt wenn gerade keine neuen Ausgaben aus der Konsole kommen, aber wie kann ich das umgehen?
Hatt da jemand vlt. einen Tipp für mich ?
Ach ja, es handelt sich hier um VB.net 2003
Gruß
mordillo
ich hab ein kleines Programm geschrieben, welches eine Konsolenanwendung startet und die Ausgaben des Konsolenprogramms über einen StreamReader in mein Programm holt.
Code dazu:
Code:
If File.Exists(AppDir) AndAlso File.Exists(CdDir) = True Then
With Anwendung.StartInfo
.FileName = CdDir
.CreateNoWindow = True
.RedirectStandardInput = True
.RedirectStandardOutput = True
.RedirectStandardError = True
.UseShellExecute = False
End With
Anwendung.Start()
Else
MsgBox("Konnte die Datei nicht finden.", MsgBoxStyle.Critical, "Dateifehler")
Exit Function
End If
Wenn die Konsolendatei also gestartet wurde wird ein Timer gestartet, der folgende Funktion aufruft:
Code:
Function ConsoleRead() As String
Dim StdOut As System.IO.StreamReader = Anwendung.StandardOutput
If StdOut.Peek > -1 Then
ConsoleRead = StdOut.ReadLine()
End If
End Function
Soweit so gut, aber: Sobald die gestartete Konsolenanwendung einmal keine Meldung hintereinander ausgibt, bleibt der StdOut.Peek auf -1, obwohl neue Zeilen in der Konsole hinzugekommen sind.
Entferne ich das 'If StdOut.Peek > -1 then' liest die Funktion zwar so wie sie soll, aber meine Anwendung reagiert nicht mehr, ausser das die aktualisierten Konsolenmeldungen weiterhin und korrekt angezeigt werden.
Das die Anwendung einfriert ist logisch, da die ' ConsoleRead = StdOut.ReadLine()' dort stehenbleibt wenn gerade keine neuen Ausgaben aus der Konsole kommen, aber wie kann ich das umgehen?
Hatt da jemand vlt. einen Tipp für mich ?
Ach ja, es handelt sich hier um VB.net 2003
Gruß
mordillo