2011-04-19 91 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線程然後讀取隊列並輸出數據。