我有一个C#表单,它有一个文本框,当exe仍在运行时,它需要不断更新exe的输出。我知道如何在exe完成后更新它,但这是我需要的不断更新。
发布于 2009-09-04 12:30:55
您有启动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没有刷新输出(参见注释)。
发布于 2009-09-04 12:30:56
要做到这一点,一种方法是使用远程处理-换句话说,您将轮询正在运行的可执行文件中的一个众所周知的方法,以检索该值并基于此更新文本框中的值。谷歌.net remoting提供了一些示例。
或者(如果你正在使用.NET3和on),你可以使用WCF和类似Tcp或Peer2Peer绑定的东西。如果不了解更多关于您的架构,我就没有更多的话可说了。
发布于 2009-09-04 12:32:36
当您说exe时,您是在谈论通过使用进程启动来运行控制台应用程序吗?
如果是这样,那么您必须获取控制台应用程序的输出,请参阅此question。
这是发送输入,这里有一个读取输出的例子。
另一种选择是让调用类与windows窗体中的事件挂钩。它将调用事件,并将导致窗体更新文本框。
https://stackoverflow.com/questions/1378906
复制相似问题