GUI应用程序C ++中的事件处理线程

时间:2014-08-31 13:12:50

标签: c++ multithreading user-interface

我正在开发一个内部连接到服务器的GUI应用程序。一旦连接,用户就可以使用GUI应用程序发送请求并从服务器获取数据。

首先,我们采用了单线程设计,点击按钮,应用程序解析收到的事件,并相应地向服务器发送请求以获取所需数据。

此时,我们仍在进行原型工作,但正在思考其工作方式的以下变化 -

  1. 有一个事件处理程序线程,当用户点击某些内容时会接收事件。

  2. 此线程将处理事件并调用相应的函数并向服务器发送请求。 (所有这些都将发生在事件处理程序线程的上下文中)

  3. 如何处理应用仍在等待服务器数据时收到的事件?我想让事件处理程序线程拒绝先前正在进行的请求并提供接收的新事件。 从用户的角度来看,当用户在前一个按钮仍在等待响应时单击一个新按钮时,我们应该转储我们之前做的事情并处理新的按钮点击。

  4. 请对此发表评论。这是我第一次使用客户端gui应用程序并请求您对此进行输入。

1 个答案:

答案 0 :(得分:0)

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

如果您的应用程序不适合删除连接,例如正在更新记录的数据库调用,您可以从队列中运行请求,将请求放入队列中,然后您的线程将其拉出并执行工作,然后通知您的应用程序它完成一个。

另一种方法是在自己的线程中运行每个请求,这样您就可以忽略不想要的结果,或者允许您实际执行多个任务。