0

(在我的程序中,我正在启动一个批处理文件,如下所示:

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

4

1 回答 1

0

您没有过多地解释您的程序结构,但我认为您应该在另一个线程中启动批处理程序,然后继续在您的主线程(或相反)中读取,这样两个线程都不会阻塞。

于 2013-05-09T15:42:14.043 回答