当 PostMessage 在线程中返回时,消息肯定在接收方的消息队列中吗?



这是我在SO上的第二个问题,希望我没有搞砸任何事情!

这个问题是理论性的,因为我的实现似乎运行得很完美,我只想确定它是否正常

我创建了多个线程,作为其工作的一部分,将PostMessage((发送到主线程。然后,主线程等待所有线程终止。在所有线程终止后,主线程调用Application。处理消息。所以问题是,在这次通话之后,是否确定所有信息都已收到?

如果PostMessage()返回非零,则保证消息已放入拥有要发布的窗口的线程的消息队列中。

CCD_ 2是一个阻塞函数。在调用线程的消息队列中完全清除挂起的消息之前,它不会退出。

现在,发布的消息是否真的到达了它被发布到的窗口的消息过程是另一回事。有一些因素可以阻止这种情况的发生。错误的消息队列筛选。从队列中删除消息之前要销毁的窗口。等等。然而,根据你描述的例子,这些情况都不太可能发生。

因此,是的,一旦所有线程都完全终止,并且对Application.ProcessMessages()的后续调用退出,就保证不会从线程接收到任何进一步的消息。

最新更新