MFC主线程等待另一个线程结束
Posted
技术标签:
【中文标题】MFC主线程等待另一个线程结束【英文标题】:MFC main thread to wait for another thread to end 【发布时间】:2012-01-19 01:29:23 【问题描述】:我正在尝试使用 MFC 创建工具。该工具的主要工作是对数据进行排序。嗯,我发现工具在排序的时候,因为只有主线程;因此,在它进行排序工作时,不能移动或单击任何对话框。因此,我创建了另一个线程来进行排序工作并且工作正常。
但是我用了一个线程之后还有一个问题。我不知道如何让主线程等待排序线程。我想在排序线程完成后做一些事情,但是现在,主线程只是移动到下一个过程而不等待排序线程完成它的工作。
这里是sn-p
AfxBeginThread(processfiles, tVals) // A thread do its work.
// below I want to do something with the result I got from the thread above.
//But main thread just do its work separately without waiting for the thread to finish its work.
.
请帮忙谢谢!!
【问题讨论】:
【参考方案1】:所以编写代码来做到这一点。弹出一个对话框。表示正在进行排序。做你想做的。让其他线程在完成后向您的线程发送信号,例如通过PostMessage
向您发送消息。
【讨论】:
您需要帮助哪一部分?您知道如何让线程发送 Windows 消息吗?你知道如何接收 Windows 消息吗? 我想知道线程如何向主线程发送消息等待。如果你能告诉我一些很棒的代码:) 等待线程完成,就像等待用户按下“确定”(这也是一条 Windows 消息)一样。继续您的业务(这可能意味着返回到您的消息泵),直到您收到线程已完成的消息。 (将线程编码为在完成后调用PostMessage
。)您的代码将把线程的完成视为一个事件,就像Windows 向它报告的任何其他事件一样。 See here以上是关于MFC主线程等待另一个线程结束的主要内容,如果未能解决你的问题,请参考以下文章
MFC:如何从主线程使用 MsgWaitForMultipleObjects() 来等待多个线程完成使用 SendMessage()?