用事件(EVENT)进行处理比较好。
我想你正确的问题应该是当Function1()执行到某一个点的时候才允许MessageHandler()函数开始往下执行吧。如果是这样的话,可以当Function1()执行到那个点的时候,激活事件,然后在MessageHandler()开始处等待这个事件,如果发现被激活变开始执行。设置和创建事件相关的函数为CreateEvent,SetEvent等等。
等待事件相关的函数为Waitforsingleobject
在MSDN中应该有详细的介绍。
呵呵。

解决方案 »

  1.   

    SendMessage等待直到返回
    The PostMessage 立即返回,不等待执行结束. 
      

  2.   

    把PostMessage换成SendMessage  
    :P
      

  3.   

    SendMessage是不对的,SendMessage是一个Block函数,它要求必须执行完MessageHandler()才能返回到函数Function1()的SendMessage后面的语句,这和提问者要求刚好反了。呵呵。
      

  4.   

    littleme741:不是某个点, 而是要确保Function1返回littleme741说的对, SendMessage是绝对不行的
      

  5.   

    在返回前的最后一句激活事件不能确保Handler的语句在function1返回后执行.
    我的意图是
    Handler是负责资源回收, 而Function1是某的用New分配出来的对象的方法,
    Function1的功能之一就是告诉Handler: 我所属的对象在我返回后就完成
    使命了, 请回收资源...
    这种方式看起来怪异, 但是在有些场合是必须的, 比如说用Socket通信的程序
    可能就会用到.以前我用的是socket api + multithread, 只需做一个回收者线程就可以了
    回收者线程接受回收消息, 然后用WaintForSingleObject确保待回收的线程
    结束, 放心地释放资源即可目前我用的是CAsyncSocket + Virtual Function(Callback), 所以回收
    机制要变一变了, 于是就产生了上面的问题.函数调用同步问题, 好象Window同步对象中对此有所涉及的只有Asynchronous Procedure Calls(APC) 但是好象也不适用我的这个场景.
      

  6.   

    说来说去就是MFC的CSocket烂。产生这么奇怪的问题·····
      

  7.   

    func1是成员函数,
    delete this; 要释放只能delete this
      

  8.   

    delete this就是了,不会有问题。
    只是在delete this 后不能在访问自己的成员变量和虚函数