【发布时间】:2011-01-09 22:41:30
【问题描述】:
目前,我正在使用WaitForSingleObject 等待子任务线程完成。不幸的是,这会导致我的 GUI 锁定。相反,我想做的是设置一个处理程序(在 GUI 线程中),它将在子任务线程完成后调用。还有其他功能吗?
【问题讨论】:
标签: multithreading mfc
目前,我正在使用WaitForSingleObject 等待子任务线程完成。不幸的是,这会导致我的 GUI 锁定。相反,我想做的是设置一个处理程序(在 GUI 线程中),它将在子任务线程完成后调用。还有其他功能吗?
【问题讨论】:
标签: multithreading mfc
您可以做的就是让您的线程做的最后一件事就是将自定义消息发布到您的窗口。然后使用 MFC 的消息映射将其作为常规消息处理。如果您无法更改线程代码,您可以创建一个新线程等待您的线程,然后发送消息。
正如您已经注意到的,锁定 GUI 线程不是一个好主意...
编辑:如 Hans 在 cmets 中指出的那样,使用 PostMessage 函数发布消息。
【讨论】:
还可以查看 MsgWaitForMultipleObjects(或 MsgWaitForMultipleObjectsEx)。 这些允许线程等待事件句柄和服务窗口消息(检查返回值以查看导致调用返回的原因)。使用示例应该可以通过 goodle 搜索获得。
http://msdn.microsoft.com/en-us/library/ms684245(VS.85).aspx
【讨论】: