2011-04-19 92 views
1

我在后台运行一个漫长的进程。我已经设法将控制台数据输出到gui。但问题在于,数据仅在处理完成后才被返回。但我需要实时显示数据。即我需要显示数据,每次它在控制台上产生一些输出。我正在用一条独立线程在我的GUI中运行这个过程。将控制台数据从进程输出到wxwidgets中的gui

我的意思是,它会像为ping命令构建一个gui,在发送每个数据包后,在控制台上显示输出,即实时。我只需要实时将它重定向到gui。我在wxwidgets中实现了gui。任何帮助将不胜感激。

感谢你..

JVC

回答

2

是从运行GUI的过程中一个单独的进程显示生成你想要的输出?或者在同一个过程中的一个单独的线程?

我问,因为大多数人,当他们问这个问题,意味着一个单独的线程。既然你用“过程”来标记你的问题,我会认为这就是你的意思。

您需要一些进程间通信。有这样一个令人眼花缭乱的各种技术。就我个人而言,我总是使用套接字。

wxWidgets具有简单易用的套接字类wxSocketClient和wxSocketServer。

后台进程可能不运行wxWidgets,所以你需要其他的东西。我建议boost :: asio。我知道它看起来很吓人,但实际上教程代码可以按原样使用。

还有很多需要说的,但我可能会偏离这一点,因为你的问题中的细节很少。

+0

我从http://wiki.wxpython.org/LongRunningTasks找到了一个简单的答案,它确实可行... – jvc 2011-04-19 14:35:33

1

您可以使用wxMutex保护输出队列。执行计算的线程写入队列,然后使用wxQueueEvent通过自定义事件向GUI线程发出信号,让它知道该线程不是空的。 GUI线程然后读取队列并输出数据。