(在我的程序中,我正在启动一个批处理文件,如下所示:
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)
该批处理文件每秒左右输出一个或多个新行。我的目标是实时阅读这些行。我想每 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