(私のプログラムでは、次のようなバッチ ファイルを開始しています。
Dim p1 as new process
Dim psi As New ProcessStartInfo(appdata & "file.bat")
psi.RedirectStandardError = True
psi.RedirectStandardOutput = True
psi.CreateNoWindow = True
psi.WindowStyle = ProcessWindowStyle.Hidden
psi.UseShellExecute = False
p1 = Process.Start(psi)
このバッチ ファイルは、1 秒ごとに 1 行以上の新しい行を出力します。私の目標は、これらの行をリアルタイムで読むことです。0.5〜1秒ごとにデータを更新したい。
p1.StandardOutput.ReadToEnd()
上記は機能しません。これまでに試したすべての方法は、バッチ ファイルが完了するまで待機します。これはまさに、情報が必要なくなった瞬間です。:P
私が見逃している単純なものがあるはずですが、それを見つけることができないようです.)
編集:新しいトリックを使用:
AddHandler p1.OutputDataReceived, AddressOf OutputHandler1
AddHandler p1.ErrorDataReceived, AddressOf Errorhandler1
miner1.BeginOutputReadLine()
Private Shared Sub OutputHandler1(ByVal sendingProcess As Object, ByVal outLine As DataReceivedEventArgs)
If Not String.IsNullOrEmpty(outLine.Data) Then
MsgBox(outLine.Data)
End If
End Sub
errorHandler1 の同じサブ
これは他のプロセスでは(リアルタイムで)機能しますが、残念ながら私のプロセスでは機能しません:P