2017-12-18 6 views
0

Gibt es jemanden, der mir helfen kann, von der Konsole Ausgabe vor dem Prozess zu beenden.Echtzeit-Ausgabe zeigt in RichTextbox

Ich habe eine Drittanbieter-Konsole-Anwendung und seine Anwendung wahrscheinlich nicht die Daten nach jeder Zeile zu leeren und ich kann nicht lesen.

Gibt es einen anderen Weg als Prozess wie Shell oder Verwenden einer beliebigen Windows-API zu verwenden, um Daten von der Konsole während der Laufzeit zu lesen?

Hier ist mein Code:

Private Sub StartMiner() 

     MinerProcess = New Process 

     MinerProcess.StartInfo.CreateNoWindow = False 
     MinerProcess.StartInfo.FileName = "abc.exe" 
     MinerProcess.StartInfo.UseShellExecute = False 
     MinerProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal 
     MinerProcess.StartInfo.RedirectStandardOutput = True 
     MinerProcess.StartInfo.RedirectStandardError = True 
     MinerProcess.EnableRaisingEvents = True 
     MinerProcess.StartInfo.Arguments = "--server abc" 

     MinerProcess.BeginOutputReadLine() 
     MinerProcess.BeginErrorReadLine() 

     MinerProcess.Start() 
     MinerProcess.WaitForExit() 

End Sub 

Private Sub MinerProcess_OutputDataReceived(sender As Object, e As DataReceivedEventArgs) Handles MinerProcess.OutputDataReceived 

     If Me.InvokeRequired Then 
      Me.BeginInvoke(CType(Sub() 
            RichTextBox1.Text = RichTextBox1.Text & e.Data & Environment.NewLine 
           End Sub, MethodInvoker)) 
     Else 
      RichTextBox1.Text = RichTextBox1.Text & e.Data & Environment.NewLine 
     End If 

End Sub 

Auch habe ich versucht, mit lesen, Beginread, Readline, ReadToEnd aber nichts arbeiten, wie ich brauche. Alle Methoden funktionieren, zeigen aber die Ausgabe an, wenn ich den Prozess beende und die Konsolendatei einen lang andauernden Prozess ausführt. Daher kann sie nicht geschlossen und erneut geöffnet werden, um die Ausgabe zu erhalten.

Antwort

0

können Sie versuchen, einen Filestream auf den Prozess stdOutput Vorbild zu machen:

Dim myStreamReader As StreamReader = myProcess.StandardOutput 

und Sie können myStreamReader immer und immer wieder ...

+0

ich habe versucht, Kumpel aber es zeigt lesen Ausgabe nach der Konsole zu beenden – SunnyGRT

+0

@SunnyGRT so können Sie überprüfen, ob der Prozess noch am Leben ist, oder? –

+0

Nein, ich kann den Fortschritt nicht live verfolgen. Wenn der Prozess beendet wird, wird die Ausgabe angezeigt. – SunnyGRT