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了,但这挂起,我认为停止线程不是一个好的解决方案。

有人有想法吗?

最好的问候本杰迈尔

4

1 回答 1

3

正确的方法是发布WM_QUITthread_id. 你用PostThreadMessage()这个。作为响应,GetMessage返回 0,while循环退出,函数退出(错误地,您缺少一条return语句)。当线程的顶层函数退出时,线程结束。

于 2011-08-02T12:36:04.910 回答