我的应用程序会定期使用process.start启动控制台程序。我需要“实时”监控程序的输出。
例如,程序将以下文本写入控制台: 处理.................
每隔一秒左右会出现一个新点,让用户知道该程序仍在处理中。但是,......直到程序输出CR / LF,我才能检索程序的标准输出(当它仍在运行时)。
我可以做些什么来实时获取输出 - 比方说 - 在VB.NET中将其输入数据库?
答案 0 :(得分:1)
如何将输出发送到文本文件并每秒读取该文件呢?
答案 1 :(得分:1)
因为我在家里有一个原型应用程序做了类似的事情,所以我很沮丧。我会看看我是否可以拿到它。在此期间,请看一下这个链接:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx
它显示了如何将应用程序的输出重定向到自定义流,例如
Public Class Form1
Private _p As Process
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim psi As New ProcessStartInfo()
psi.FileName = "C:\mydir.bat"
psi.RedirectStandardOutput = True
psi.UseShellExecute = False
_p = New Process()
_p.Start(psi)
tmrReadConsole.Enabled = True
End Sub
Private Sub tmrReadConsole_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrReadConsole.Tick
If _p IsNot Nothing Then
txtConsoleOutput.Text = _p.StandardOutput.ReadToEnd()
End If
End Sub
End Class
以上是一个webform,它有一个计时器,用于轮询控制台的输出流并将其内容放入文本框中。它不太有用(因此我想找到我的其他应用程序),但你明白了。
希望这有帮助。