2014-08-31 55 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

有几个策略。如果您的应用程序适合忽略结果,则可以取消连接并运行一个新连接。一些服务器应用程序不喜欢这个。

如果你的应用程序不需要删除连接,比如正在更新记录的数据库调用,那么你可以将请求从队列中运行出去,将请求放入队列中,并且你的线程将它拉出来工作,然后通知您的应用程序完成一个。

另一种方法是在自己的线程中运行每个请求,这将允许您忽略来自您不想要的结果或允许您一次执行多个任务。