Отслеживать стандартный вывод процесса, который не обязательно использует CR / LF - PullRequest
0 голосов
/ 29 июня 2009

Мое приложение периодически запускает консольные программы с помощью process.start. Мне нужно контролировать вывод программ в режиме реального времени.

Например, программа записывает в консоль следующий текст: Обработка .................

Каждую секунду или около того появляется новая точка, чтобы сообщить пользователю, что программа все еще обрабатывает. Однако ... пока программа не выведет CR / LF, я не смогу получить стандартный вывод программы (пока она еще работает).

Что я могу сделать, чтобы получить выходные данные в реальном времени, скажем, для передачи их в базу данных, например, в VB.NET?*1007

Ответы [ 2 ]

1 голос
/ 29 июня 2009

Я потрошен, потому что у меня дома есть прототип приложения, который сделал что-то вроде этого. Я посмотрю, смогу ли я получить это. А пока взгляните на эту ссылку:

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

Выше приведена веб-форма с таймером, который используется для опроса выходного потока консоли и передачи его содержимого в текстовое поле. Это не совсем работает (поэтому я и хочу найти другое приложение), но вы поняли.

Надеюсь, это поможет.

1 голос
/ 29 июня 2009

как насчет отправки вывода в текстовый файл и чтения этого файла каждую секунду?

...