我有一个处理特定数据并在 UI 中显示的应用程序。
最初我只有一个线程,即主进程,负责执行工作,即检索要处理的数据、处理数据,然后更新 UI。数据驻留在另一台服务器上。
但是,应用程序的要求发生了变化,需要从服务器检索和处理的数据比以前想象的要多得多。这会产生性能问题,因为必须检索、处理数据,然后 UI 必须弄清楚它应该放在哪里
UI 是基于 CListCtrl
的 MFC 控件。
为了解决这个问题,我将处理拆分为两个线程,一个获取数据并处理数据,另一个用于显示数据,即 GUI。
我需要一些方法来向 UI
线程发送信号,表明数据已被提取和处理。线程是使用 CreateThread
创建的。向另一个线程发出它可以完成自己的工作的信号的最佳方式是什么?
最佳答案
我建议如下:当您的单独线程必须通知 GUI 某事时,您应该向包含控件的窗口调用 PostMessage。
消息参数应该是用户定义的消息,例如您定义的内容
#define WM_MYMESSAGE (WM_USER + 1)
另外两个参数(LPARAM 和 LPARAM)将包含您需要传递给 GUI 的数据。因此,在 CreateThread 中,您需要传递有关将接收消息的窗口的一些信息(如果您使用 MFC,则为 CWnd 指针,否则为 HWND 句柄)。
然后你需要在你的窗口中处理这个消息(参见关于 ON_COMMAND 和类似宏的引用)
关于c++ - 向同一进程中的另一个线程发出信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31238365/