刚刚遇到个问题,请教大家,一个线程用以下代码终止:
if(::GetExitCodeThread(hThread1,&code))
{
if(STILL_ACTIVE==code)
{
retVal=TerminateThread(hThread1,0);
CloseHandle(hThread1);
}
}
运行时retVal返回1,说明TerminateThread已经成功执行,但是接下来用以下代码: retVal=::GetExitCodeThread(hThread1,&code);
if(!retVal || code!=STILL_ACTIVE)
{
hThread1=CreateThread(NULL,0,ThreadProc1,(LPVOID)&data,0,NULL);
} 这时retVal居然还返回1,并且code仍然等于STILL_ACTIVE,问题是前面已经把这个线程终止了,而且TerminateThread函数也执行成功了,但是现在出现这样的结果,如何解释,这是问什么呢?谢谢大家!
if(::GetExitCodeThread(hThread1,&code))
{
if(STILL_ACTIVE==code)
{
retVal=TerminateThread(hThread1,0);
CloseHandle(hThread1);
}
}
运行时retVal返回1,说明TerminateThread已经成功执行,但是接下来用以下代码: retVal=::GetExitCodeThread(hThread1,&code);
if(!retVal || code!=STILL_ACTIVE)
{
hThread1=CreateThread(NULL,0,ThreadProc1,(LPVOID)&data,0,NULL);
} 这时retVal居然还返回1,并且code仍然等于STILL_ACTIVE,问题是前面已经把这个线程终止了,而且TerminateThread函数也执行成功了,但是现在出现这样的结果,如何解释,这是问什么呢?谢谢大家!
CloseHandle(hThread1); 另外像1L说得那样,TerminateThread最好是少用
并不会立即中止线程