Kommunikation zu einer Konsolenanwendung

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:

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
 

Neue Beiträge

Zurück