发现点击关闭按钮,进程不能退出,等待很长时间也不能退出。
发送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]); //设置后让上面循环退出,结束线程