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

时间:2011-01-09 22:41:31

标签: multithreading mfc

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

2 个答案:

答案 0 :(得分:3)

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

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

编辑:发布消息是使用PostMessage函数完成的,正如Hans在评论中指出的那样。

答案 1 :(得分:1)

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

http://msdn.microsoft.com/en-us/library/ms684245(VS.85).aspx