Code Snippet
::CWinThread* beginThread( ::AFX_THREADPROC ThreadProcPtr, LPVOID Param )
{
::CWinThread* thPtr = ::AfxBeginThread( ThreadProcPtr, Param, 0, 0U, CREATE_SUSPENDED );
thPtr->m_bAutoDelete = FALSE;
thPtr->ResumeThread();
return thPtr;
}
DWORD endThread( ::CWinThread* ThreadPtr )
{
DWORD ret = 0;
if( ThreadPtr != NULL )
{
::WaitForSingleObject( ThreadPtr->m_hThread, INFINITE );
::GetExitCodeThread( ThreadPtr->m_hThread, &ret );
delete ThreadPtr;
ThreadPtr = NULL;
}
_tprintf( _T( "0x%08p --> " ), ThreadPtr );
ASSERT( ThreadPtr == NULL ); // 常にOK
return ret;
}
void hogehoge()
{
::CWinThread* p = NULL;
// ・・・
p = beginThread( enterFuncThread, &args );
// ・・・
_tprintf( _T( "Thread Pointer : 0x%08p --> " ), p );
endThread( p );
_tprintf( _T( "0x%08p\n" ), p );
ASSERT( p == NULL ); // なぜかひっかかる
}