Click here to Skip to main content
15,884,986 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
QuestionGetting logical drives of all Physical drives Pin
learningvisualc12-Jan-11 19:03
learningvisualc12-Jan-11 19:03 
AnswerRe: Getting logical drives of all Physical drives Pin
Andrew Brock12-Jan-11 19:17
Andrew Brock12-Jan-11 19:17 
QuestionHow can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 18:39
Le@rner12-Jan-11 18:39 
AnswerRe: How can Terminate AfxbeginThread ? [modified] Pin
Andrew Brock12-Jan-11 18:58
Andrew Brock12-Jan-11 18:58 
GeneralRe: How can Terminate AfxbeginThread ? [modified] Pin
Le@rner12-Jan-11 19:12
Le@rner12-Jan-11 19:12 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock12-Jan-11 19:24
Andrew Brock12-Jan-11 19:24 
GeneralRe: How can Terminate AfxbeginThread ? [modified] Pin
Le@rner12-Jan-11 19:26
Le@rner12-Jan-11 19:26 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock12-Jan-11 20:35
Andrew Brock12-Jan-11 20:35 
Threads will very rarely close immediately after you tell it to. The reasons are too complex for me to explain here, but that isn't very important to this.
All that matters is that you wait for it to close. We do this with WaitForSingleObject http://msdn.microsoft.com/en-us/library/ms687032(v=vs.85).aspx[^], which will wait for almost anything that has a HANDLE
Th->PostThreadMessage(CM_KILL_THREAD, 0, 0);
switch (WaitForSingleObject(Th->m_hThread, 5000)) { //5000 = 5sec, this can be INFINITE, but if the thread never exits, then this will hang for ever
	case WAIT_OBJECT_0:
		TRACE("Thread terminated.\n");
		break;

	case WAIT_TIMEOUT:
		TRACE("Wait for terminate timed out.\n");
		//You may consider using TerminateThread here if you REALLY REALLY want the thread gone
		break;

	default:
		TRACE("WaitForSingleObject failed with error %d.\n", GetLastError());
		break;
}
//Now that the thread is gone, we can continue, say get the exit code that was passed to ExitThread()
DWORD nRetCode;
GetExitCodeThread(hRemoteThread, &nRetCode);


Be very careful with the earlier suggestion of TerminateThread, it can end badly. See http://msdn.microsoft.com/en-us/library/ms686717(v=vs.85).aspx[^] for more details
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 20:40
Le@rner12-Jan-11 20:40 
AnswerRe: How can Terminate AfxbeginThread ? [modified] Pin
Andrew Brock12-Jan-11 20:58
Andrew Brock12-Jan-11 20:58 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 21:17
Le@rner12-Jan-11 21:17 
AnswerRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock12-Jan-11 21:21
Andrew Brock12-Jan-11 21:21 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 21:30
Le@rner12-Jan-11 21:30 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock12-Jan-11 22:26
Andrew Brock12-Jan-11 22:26 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 23:13
Le@rner12-Jan-11 23:13 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock13-Jan-11 0:11
Andrew Brock13-Jan-11 0:11 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 23:42
Le@rner12-Jan-11 23:42 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Andrew Brock12-Jan-11 23:56
Andrew Brock12-Jan-11 23:56 
GeneralRe: How can Terminate AfxbeginThread ? Pin
Le@rner12-Jan-11 23:59
Le@rner12-Jan-11 23:59 
AnswerRe: How can Terminate AfxbeginThread ? Pin
Prasann Mayekar12-Jan-11 18:59
Prasann Mayekar12-Jan-11 18:59 
AnswerRe: How can Terminate AfxbeginThread ? Pin
Cedric Moonen12-Jan-11 20:49
Cedric Moonen12-Jan-11 20:49 
QuestionWhile Statement Issue. Pin
Mike Certini12-Jan-11 17:53
Mike Certini12-Jan-11 17:53 
AnswerRe: While Statement Issue. Pin
David Crow12-Jan-11 17:57
David Crow12-Jan-11 17:57 
GeneralRe: While Statement Issue. Pin
Andrew Brock12-Jan-11 18:06
Andrew Brock12-Jan-11 18:06 
GeneralRe: While Statement Issue. Pin
Mike Certini12-Jan-11 18:23
Mike Certini12-Jan-11 18:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.