我有一个工作线程m_workthread,如果单执行一次m_workthread->PostThreadMessage(WM_ADD,0,0);就没有问题。但是如果变成 for(int i=0;i<2;i++)
m_workthread->PostThreadMessage(WM_ADD,0,0);线程就只会响应一次,为什么啊?搞不懂诶

解决方案 »

  1.   

    试一下下面的代码看会响应几次:
     for(int i=0;i<2;i++)
    {
        m_workthread->PostThreadMessage(WM_ADD,0,0);
        Sleep(1);
    }
      

  2.   

    一次!而且是最后一次才响应,就是第一次的post没有响应,但是每一次的post都返回true
      

  3.   

    你的工作线程是用PeekMessage取的消息么?
    另外你的消息用没用RegisterWindowMessage注册呢?
      

  4.   

    啥意思?
    [/Quote]啥意思?
      

  5.   

    是peekmessage,我用的是自定义的消息,还要用regesiterwindowmessage么?
      

  6.   

    UINT CMainView::workThread( LPVOID param )
    {for(;PeekMessage(&MainView->m_custommessage,NULL,0,0,PM_REMOVE););
    MainView->m_custommessage.message = 0;
    while(true)
    {
    switch (MainView->m_custommessage.message)
    {
     case WM_CLOSETHREAD:
    {.......
    return 0}
    case case WM_ADD:
    {
    .......
    for(;PeekMessage(&MainVegaView->m_custommessage,NULL,0,0,PM_REMOVE););
    MainVegaView->m_custommessage.message=0;
    break;
    }
    }
    }
    }