1
我有這樣一個主題:正確終止正在運行的線程,其「作品」
DWORD WINAPI message_loop_thread(LPVOID dummy) {
MSG message;
while (GetMessage(&message, NULL, 0, 0)) {
TranslateMessage(&message);
DispatchMessage(&message);
}
}
和我一起CreateThread
啓動:
DWORD thread_id;
CreateThread(0, 0, message_loop_thread, 0, 0, &thread_id);
這似乎是工作,但我怎麼能正確關閉這個線程?通常線程正在等待GetMessage
,所以我認爲線程被阻塞。
有沒有很好的方法來做到這一點?我試過TerminateThread
,但是這個掛起,我認爲這不是一個很好的解決方案。
有人想法嗎?
問候 BENJ邁耶
不要使用CreateThread(),除非你知道它做了什麼*不做*。 'CreateThread()'不會正確初始化運行時,也不會在線程死亡時設置CRT終結鉤子來執行。看到這裏的討論:http://stackoverflow.com/questions/331536/windows-threading-beginthread-vs-beginthreadex-vs-createthread-c –