waitforsingleobject等待线程结束

场景:WaitForSingleObject等待线程结束后closehandle 出现错误

WaitForSingleObject等待线程结束后closehandle 出现异常
C/C++ code
        SetEvent(m_hExit);
        DWORD rt = WaitForSingleObject(m_hThread,2000);
        if( WAIT_OBJECT_0 == rt)
        {
            CloseHandle(m_hThread);
            m_hThread = NULL;
            return true;
        }


代码如上,关闭线程发生异常,不解.
0xC0000008: An invalid handle was specified
GetLastError():6

不是不需要线程的句柄后应该close掉么, 为什么报非法句柄?WaitForSingleObject不是还用的好好的么,
希望大牛们帮忙,谢谢

------解决方案--------------------
如果是MFC最好用afxbeginthread,如果是普通的C++程序,就_beginthreadex,其他的最好不要用,用也可以但你要知道区别,最好了解底层是怎么实现的,做了什么操作,这样才能正确处理好。
回到主题,我没用过这个API,MSDN查了下,发现有一句话
when using _beginthread and _endthread, do not explicitly close the thread handle by calling the Win32 CloseHandle API.
看见没,虽然都是创建线程,但具体用起来还是略有区别的,原因自己看MSDN