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

event handling thread in a GUI application C++

本文关键字:事件处理 线程 应用程序 C++ GUI      更新时间:2023-10-16

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

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

目前,我们仍在进行原型工作,但考虑了以下工作方式的变化-

  1. 有一个事件处理程序线程,当用户点击某个东西时,该线程接收事件。

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

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

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

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

如果应用程序不适合仅断开连接,例如更新记录的数据库调用,则可以从队列中运行请求,将请求放入队列中,然后线程将其拉出并完成工作,然后通知应用程序已完成连接。

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