监控不一定使用CR / LF的过程标准输出

时间:2009-06-29 14:33:52

标签: vb.net console-application real-time redirectstandardoutput

我的应用程序会定期使用process.start启动控制台程序。我需要“实时”监控程序的输出。

例如,程序将以下文本写入控制台: 处理.................

每隔一秒左右会出现一个新点,让用户知道该程序仍在处理中。但是,......直到程序输出CR / LF,我才能检索程序的标准输出(当它仍在运行时)。

我可以做些什么来实时获取输出 - 比方说 - 在VB.NET中将其输入数据库?

2 个答案:

答案 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,它有一个计时器,用于轮询控制台的输出流并将其内容放入文本框中。它不太有用(因此我想找到我的其他应用程序),但你明白了。

希望这有帮助。