c++ - 向同一进程中的另一个线程发出信号

标签 c++ multithreading mfc signals

我有一个处理特定数据并在 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/

相关文章:

java - 如何停止该线程内的线程/计时器?

Java并发 - 写入同一数组的不同索引

visual-c++ - 如何交换 MFC CString?

c++ - 录制屏幕时不会出现奇怪的 MFC/GDI 行为(空白图像)

multithreading - SGE/UGE/etc.. 将 OpenMP 作业提交到多个内核的标准化方式?

c++ - 如何在 Win32 应用程序中通过 C++/MFC 在鼠标光标处显示动态文本

C++套接字窗口

c++ - Visual Studio 2010,可以简单地包含一个新类来触发发布构建错误吗?

c++ - 最佳绘图方法

c++ - C++ 的可移植字节流接口(interface)