线程不结束进程不退出
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]); //设置后让上面循环退出,结束线程
这篇关于线程不结束进程不退出的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)