2014-08-31 85 views
0

我正在開發一個內部連接到服務器的GUI應用程序。用戶可以使用GUI應用程序發送請求並在連接後從服務器獲取數據。GUI應用程序中的事件處理線程C++

首先,我們使用單線程設計,點擊按鈕時,應用程序解析接收到的事件,並相應地向服務器發送請求以獲取所需的數據。

在這一點上,我們還在做原型機的工作,但在這種工作方式在想下面的變化 -

  1. 有當用戶點擊一些東西,接收事件的事件處理線程。

  2. 此線程將處理事件並調用相應的函數並向服務器發送請求。 (所有這些都將發生在事件處理程序線程的上下文中)

  3. 如何處理應用程序仍在等待服務器數據時收到的事件?我正在考慮讓事件處理程序線程拒絕前一個正在進行的請求併爲接收到的新事件提供服務。 從用戶的角度來看,當用戶點擊一個新的按鈕,當前一個按鈕還在等待響應時,我們應該轉儲我們之前做的事情並處理新的按鈕點擊。

請對此發表評論。這是我第一次在客戶端應用程序上工作,並請求您輸入這個。

+0

您可以簡單地在另一個線程中發送請求。 – ikh 2014-08-31 13:22:43

+0

對於您的應用程序來說,忽略第一次調用服務器的結果是恰當的,即像Web瀏覽器一樣,不存在忽略它的副作用。 – Steve 2014-08-31 13:22:49

回答

0

有幾個策略。如果您的應用程序適合忽略結果,則可以取消連接並運行一個新連接。一些服務器應用程序不喜歡這個。

如果你的應用程序不需要刪除連接,比如正在更新記錄的數據庫調用,那麼你可以將請求從隊列中運行出去,將請求放入隊列中,並且你的線程將它拉出來工作,然後通知您的應用程序完成一個。

另一種方法是在自己的線程中運行每個請求,這將允許您忽略來自您不想要的結果或允許您一次執行多個任務。