线程不结束进程不退出

2021/6/19 7:27:20

本文主要是介绍线程不结束进程不退出,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

发现点击关闭按钮,进程不能退出,等待很长时间也不能退出。

发送WM_QUIT消息给UI线程让其退出;

进程没有退出,就是因为有个线程没有退出导致的。在进程管理器中杀死进程,杀死了

杀死线程用TerminateThread()强杀线程,线程如期被干掉,进程退出了。

 

线程中用GetMessage接收消息,而接收到这个消息后GetMessage返回0,就是这个0,如果不让其退出也是可以的white循环不退出。

 

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,

    MSG msg;

    // 主消息循环: 
    while (GetMessage(&msg, nullptr, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int)msg.wParam;
}
 

 

 

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {

    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;

 

 

Thread(){

    资源回收

    bool bRun = true;
    while (bRun)
    {
        DWORD dwEvent = WaitForMultipleObjects(2, ghEvents, FALSE, INFINITE);
        switch (dwEvent)
        {
        case WAIT_OBJECT_0:
        {
                bRun = false;
        }
        break;
        case WAIT_OBJECT_0 + 1:
            ....
            break;
        default:
            break;
        }
    }
    for (int i = 0; i < 2; i++){
        CloseHandle(ghEvents[i]);
    }

}

 SetEvent(ghEvents[0]);   //设置后让上面循环退出,结束线程

 



这篇关于线程不结束进程不退出的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程