我有以下代码:
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是嗅探器,因此它可以正常使用,直到被暂停。如何实时重定向数据?谢谢。
最佳答案
您当前正在调用ReadToEnd
,它将阻塞到流的末尾。
您可以从单独的线程重复调用Read
,也可以使用更新的事件处理方法,在调用Process.OutputDataReceived
之后为每行处理BeginOutputReadLine
。更改文本框之前,请不要忘记将其编组回UI线程。