0

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

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

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

我可以做些什么来实时获取输出 - 比如说 - 将它输送到数据库中,例如在 VB.NET 中?

4

2 回答 2

1

将输出发送到文本文件并每秒读取该文件怎么样?

于 2009-06-29T14:35:30.650 回答
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

以上是一个带有计时器的网络表单,用于轮询控制台的输出流并将其内容放入文本框中。它不太有效(因此我想找到我的其他应用程序),但你明白了。

希望这可以帮助。

于 2009-06-29T16:21:36.210 回答