WaitForSingleObject等待线程结束后closehandle 出现错误
WaitForSingleObject等待线程结束后closehandle 出现异常
代码如上,关闭线程发生异常,不解.
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
- 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