问题描述
这是我在这里的第二个问题,希望我没有搞砸任何事情!
这个问题是理论上的,因为我的实现似乎工作得很好,我只想确保它可以。
我创建了多个线程,作为其工作PostMessage()到主线程的一部分。 然后,主线程等待所有线程终止。所有线程终止后,主线程调用Application.ProcessMessages。所以问题是在此呼叫之后是否确定已收到所有消息?
解决方法
如果PostMessage()
返回非零,则可以确保已将消息放入拥有要发布到的窗口的线程的消息队列中。
Application.ProcessMessages()
是一项阻止功能。在完全清除调用线程的消息队列中的未决消息之前,它不会退出。
现在,发布的消息是否实际到达其发布到的窗口的消息过程是另一回事。有一些因素可以防止这种情况。错误的消息队列过滤。从队列中删除消息之前,该窗口已被破坏。等等,但是,按照您描述的示例,不太可能发生任何此类情况。
是的,一旦所有线程完全终止,并且对Application.ProcessMessages()
的后续调用已退出,则可以保证不会再收到来自线程的任何消息。