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()?

主线程啥都没做,就会等待子线程结束。这是为啥?

windows API主线程如何等待子线程结束后再继续运行

怎么让当前线程等待另一个线程完成之后再去执行