给线程创建消息循环,使用PostThreadMessage给线程发消息
但是PostThreadMessage应该和PostMessage一样,未等线程处理完消息就返回了
请问有没办法确保线程能够处理所有发给它的消息呢?

解决方案 »

  1.   

    PostThreadMessage返回TRUE就表示成功插入到线程消息队列,
    除非线程崩溃,一般都会被处理如果线程不能正常处理其消息队列,那应是系统出问题了
      

  2.   


    /*Create an event object, then create the thread. Use the WaitForSingleObject function to wait for the event to be set to the signaled state before calling PostThreadMessage. In the thread to which the message will be posted, call PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE) to force the system to create the message queue. Set the event, to indicate that the thread is ready to receive posted messages. 
    */MSDN中说了,用WaitForSingleObject 来等待Post完成.
    具体看下这个
    http://www.cnblogs.com/ahuo/archive/2007/08/22/864948.html
      

  3.   

    如果发送失败返回0,可以sleep,然后再次post。
      

  4.   

    MSDN上那句的意思应该是,在线程创建之后,线程消息队列创建之前,应该使用事件来等待
    目的是确保给线程发送消息时,确保线程已经创建了消息队列
    目前的情况可能是,当线程已经创建了消息队列,就跟2楼兄弟说的,PostThreadMessage返回TRUE就应该没问题了
    是不是这样?
      

  5.   

    返回TRUE就是说post成功了,系统会去做消息处理函数的调用。至于消息怎么处理,那就是你自己控制了。
      

  6.   

    PostThreadMessage 只能是在同一个进程里的 线程的交互?两个进程间的不同线程之间是不是 不能用这个函数?
      

  7.   

    额  给线程发!!! 你看用SendMessageCallback()给窗体发行不。。它发送了就立即返回,但是窗体处理完消息之后就去响应一个函数 ResultCallBack()  看看对你有帮助么