Перенаправить стандартный поток (Process.Start) - PullRequest
2 голосов
/ 12 октября 2010

У меня есть следующий код:

 private void button1_Click(object sender, EventArgs e)
    {
        Process process = new Process();
        ProcessStartInfo processStartInfo = new ProcessStartInfo();

        processStartInfo.Arguments = "-i 1 -x";
        processStartInfo.CreateNoWindow = false;
        processStartInfo.FileName = @"F:\NET\WiresharkPortable\App\Wireshark\tshark.exe";
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.UseShellExecute = false;
        process.StartInfo = processStartInfo;
        process.Start();

        StreamReader streamReader = process.StandardOutput;
        textBox1.AppendText(streamReader.ReadToEnd() + "\r\n");
    }

Я пытаюсь перенаправить вывод в мою программу.tshark - сниффер, так что он работает, пока не будет приостановлен.Как перенаправить данные в режиме реального времени?Спасибо.

1 Ответ

2 голосов
/ 12 октября 2010

В настоящее время вы звоните ReadToEnd, что блокирует конец потока.

Вы можете либо повторно вызывать Read из отдельного потока, или вы можете использовать более новый подход к обработке событий, обрабатывая Process.OutputDataReceived для каждой строки после вызова BeginOutputReadLine.Не забудьте выполнить маршалинг обратно в поток пользовательского интерфейса перед изменением текстового поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...