重定向标准流(Process.Start)

时间:2010-10-12 10:28:15

标签: c# process

我有以下代码:

 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 个答案:

答案 0 :(得分:2)

您当前正在调用ReadToEnd,它将阻止到流的末尾。

你可以 从一个单独的线程重复调用Read你可以使用更新的事件方法,为每一行处理Process.OutputDataReceived致电BeginOutputReadLine后。在更改文本框之前,不要忘记编组回UI线程。