本帖最后由 xiaoyuanyuan2009 于 2012-04-10 19:33:21 编辑

解决方案 »

  1.   

    pThread1->m_bAutoDelete=pThread2->m_bAutoDelete=0;
      

  2.   

    默认是自动释放,线程结束后pThread1在析构函数里被delete,句柄被closehandle,
    ::GetExitCodeThread(pThread2->m_hThread, &dd);这里已经无效了,可以用楼上大神的方法自己释放,也可以用duplicatehandle(好像是这个)
      

  3.   

    回1楼
    回2楼:
    下面 GetExitCode 是456 了。 TRACE 还全是1void CMainWindow::click()
    {
    arr.SetSize(1000);
    for(int i = 0; i<=999; i++)
    arr[i] = 777;
    CWinThread *pThread1 = AfxBeginThread( ThreadFunc1,this,THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED );
    CWinThread *pThread2 = AfxBeginThread( ThreadFunc2,this,THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED );

    pThread1->m_bAutoDelete=pThread2->m_bAutoDelete=0;  pThread1->ResumeThread();
    pThread2->ResumeThread();
    ::WaitForSingleObject(pThread1->m_hThread, INFINITE);
    ::WaitForSingleObject(pThread2->m_hThread, INFINITE);
    TRACE("\n\n\n");
    for(int i = 0; i < arr.GetSize(); i++)
    TRACE("%d\t", arr[i]); DWORD dd;
    ::GetExitCodeThread(pThread2->m_hThread, &dd);
    TRACE("\n\n****\n%d\n***",dd);}
      

  4.   

    麻烦点话可以再用个event控制下