Multithreading 当线程在MFC中完成时,如何添加事件处理程序?

Multithreading 当线程在MFC中完成时,如何添加事件处理程序?,multithreading,mfc,Multithreading,Mfc,目前,我正在使用WaitForSingleObject等待子任务线程完成。不幸的是,这会导致我的GUI锁定。相反,我想做的是设置一个处理程序(在GUI线程中),该处理程序将在子任务线程完成后调用。还有其他功能吗?你可以做的是让你的线程做的最后一件事就是向你的窗口发布自定义消息。然后使用MFC的消息映射将其作为常规消息处理。如果无法更改线程代码,可以创建一个新线程,等待线程,然后发送消息 正如您已经注意到的,锁定GUI线程不是一个好主意 编辑:如Hans在评论中指出的,使用PostMessage功

目前,我正在使用
WaitForSingleObject
等待子任务线程完成。不幸的是,这会导致我的GUI锁定。相反,我想做的是设置一个处理程序(在GUI线程中),该处理程序将在子任务线程完成后调用。还有其他功能吗?

你可以做的是让你的线程做的最后一件事就是向你的窗口发布自定义消息。然后使用MFC的消息映射将其作为常规消息处理。如果无法更改线程代码,可以创建一个新线程,等待线程,然后发送消息

正如您已经注意到的,锁定GUI线程不是一个好主意


编辑:如Hans在评论中指出的,使用PostMessage功能发布消息。

还可以查看MsgWaitForMultipleObjects(或MsgWaitForMultipleObjectsEx)。 这些允许线程等待事件句柄和服务窗口消息(检查返回值以查看是什么导致调用返回)。应通过goodle搜索提供使用示例


PostMessage,不发送消息。@Hans Passant:我同意你的观点,这是正确的使用方法。我选择了草率的词语,我将编辑我的答案以反映这一点。