因为它们两个是有区别的
SendMessage发送消息并挂起当前线程直到消息被处理才继续向下执行
PostMessage投递消息,不管消息是否被响应,线程继续运行
也就是说,用SendMessage可以保证数据的边界,而PostMessage却不能

解决方案 »

  1.   

    只要你传送的数据是动态分配的就可用PostMessage,在处理完该消息后再释放数据指针。
      

  2.   

    SendMessage相对可靠,PostMessage相对高速。同意FBStudio。可以将串行数据用一个数据类封装,收到数据后生成一个新对象,将其指针通过PostMessage传递给目标,由目标负责delete.
      

  3.   

    和lhxx(随风)说的一样:
    PostMessage投递消息是发到线程的消息队列中去,不会立即被响应。
    而且系统会根据消息的优先级调整队列,一些优先度低的消息可能永远得不到处理。
    所以,postmessage只用于发送一些不需要同步的消息。
    但是在线程之间Send消息,必须防止阻塞,比如线程1向线程2Send一个消息,处理这个消息时线程2又向线程1Send一个消息,这样两个线程就都被挂起了,消息永远不会被响应。