使用流程标准输出不断更新表单

时间:2009-09-04 12:23:41

标签: c# forms process

我有一个C#表单,它有一个文本框,当exe仍在运行时需要不断更新exe的输出。我知道如何在exe完成后更新它,但它是我需要的不断更新。

3 个答案:

答案 0 :(得分:1)

你的进程启动了exe:

// Normal creation and initialization of process - additionally:
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += ProcessOnOutputDataReceived;
process.Start();
process.BeginOutputReadLine();

和处理程序:

private void ProcessOnOutputDataReceived( object sender, DataReceivedEventArgs args )
{
    // use args.Data
}

修改
我忘记了process.StartInfo.UseShellExecute = false;:/

修改
事实证明,exe没有刷新输出(见注释)

答案 1 :(得分:0)

执行此操作的一种方法是使用远程处理 - 换句话说,您将在正在运行的可执行文件中轮询一个众所周知的方法来检索值并根据此更新文本框中的值。谷歌.net远程处理一些样本。

或者(如果你正在使用.NET3),你可以使用WCF和Tcp或Peer 2 Peer绑定之类的东西。在不了解您的架构的情况下,我对此没有更多的了解。

答案 2 :(得分:0)

当你说exe时你是在谈论使用进程启动来运行控制台应用程序吗?

如果是这样,那么您必须获得控制台应用的输出,请参阅此question

这是发送输入,有一个例子来读取输出。

另一个选项是让调用类与Windows窗体中的事件挂钩。它将调用该事件将导致表单更新文本框。