如果在主线程中执行一个需要较长时间运算的函数,在函数中怎样才能通知到主线程去处理其他消息。就像Delphi的Application.ProcessMessage()那样!

解决方案 »

  1.   

    创建工作者线程,然后用PostMessage()发送消息给制定窗口
      

  2.   

    现在的问题是我在主线程调用这个函数时需要等待它的返回,使用工作者线程仍然不能避免等待的发生。所以我就计划干脆不使用多线程的技术,直接在函数中通知主线程去处理其他等待的消息(以避免程序对用户的动作不反映的“死机”现象)。在delphi中有Application.ProcessMessage()这样的函数,我查了CWinApp好像有个PumpMessage()方法,我不是十分明白其英文的说明。不知它是否可以处理主线程中在等待的其他的消息?
      

  3.   

    MSG msg;
    while(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
      

  4.   

    谢谢Aerith(艾莉斯),后来我查了delphi源码,发现它和你的实现差不多。