对话框当然没发动啦,你代码里面WaitForMultipleObjects调用在一直等待LogicThread线程的退出(对话框无法处理其他消息),只有LogicThread线程退出后你的StartMainServer调用才完成

解决方案 »

  1.   

    用这个WaitForSingleObject也是一样的效果
    那是不是要再创建一个对话框,然后再那里执行才行,把这个监听主线程放到那个窗口里运行是唯一的办法?
      

  2.   

    可以再开一个线程执行StartMainServer,这样对话框就会有响应
      

  3.   

    请问是说这样么
    void CAAXDlg::OnBnClickedBtnStart()
    {
      ......
      一些窗口初始化的代码
      创建个线程去执行StartMainServer();
    createthread(xxx,startmainserver,......)这样吗
      .....}
      

  4.   

    using
    MsgWaitForMultiObjects
    in your main process(thread)
      

  5.   

    请问是说这样么
    void CAAXDlg::OnBnClickedBtnStart()
    {
      ......
      一些窗口初始化的代码
      创建个线程去执行StartMainServer();
    createthread(xxx,startmainserver,......)这样吗
      .....}
    恩就这样
      

  6.   

    我试试MsgWaitForMultipleObjectsvcayi()  这样好像不行,主线程还是要等待,不等待的话,子线程也都跟着关闭了
      

  7.   

    yjqx老兄
    我加了
    DWORD exitCode = 0; 
        bool quit = false;   
        while(!quit)   
        {
            MSG msg;
            DWORD result;
            result = MsgWaitForMultipleObjects(1,&hThread,false,INFINITE,QS_ALLINPUT);  
            if(result == WAIT_OBJECT_0 + 1)
            {
                while(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) 
                {
                    if(msg.message == WM_QUIT) 
                    {
                        quit = true;
                        TerminateThread(hThread,exitCode);
                        break;   
                    }     
                    TranslateMessage(&msg);   
                    DispatchMessage(&msg);   
                }   
            }
            else
            {
                if(WaitForSingleObject(hThread,INFINITE)==WAIT_OBJECT_0) 
                { 
                    CloseHandle(hThread);
                    hThread = 0;   
                }   
            }                 
        }
    不过还是不行,CPU占用直线上升,呵呵.
    能给提个建议不.
      

  8.   

    你原来的代码不变,然后用一个新的线程来执行StartMainServer函数也不行吗?