用postthreadmessage发送的线程消息为什么在线程里不一定收的到?该怎么处理

用postthreadmessage发送的线程消息为什么在线程里不一定收的到?
在主线程里 PostThreadMessage(myThread.Threadid,wmmsg,0,integer('测试内容'));

线程里循环 PeekMessage(myMsg,0,0,0,PM_REMOVE);

有时收不到,有时收到的是错误信息(string(myMsg.lParam) 不等于 '测试内容' ),这是为什么?

------解决方案--------------------
那个线程第一次调用PeekMessage之类的api之前是没有消息队列的,此时发消息没用

你PeekMessage(myMsg,0,0,0,PM_REMOVE);要检查myMsg.message是否等于wmmsg
------解决方案--------------------
是不是PeekMessage(myMsg,0,0,0,PM_NOREMOVE);之前就发了
你把代码弄上来
------解决方案--------------------
不用这么麻烦吧,在子线程中设置一个事件,下载完,通知主线程,主线程计数剩余数量,语音播报.