我正在尝试在控制台应用程序中优雅地退出,当关闭按钮被点击时。
我的处理程序被正确调用,但主线程之后没有恢复,所以“bye”从未出现。如果我捕获CTRL_C_EVENT并在控制台上按^C,则允许主线程继续并平稳退出。是否有一些方法可以在控制台关闭时允许主线程平稳退出?
我还尝试使用std::signal,但效果相同。对于^C有效,但对于窗口关闭无效。
bool done = false;
BOOL ctrl_handler(DWORD event)
{
if (event == CTRL_CLOSE_EVENT) {
done = true;
return TRUE;
}
return FALSE;
}
int main()
{
SetConsoleCtrlHandler((PHANDLER_ROUTINE)(ctrl_handler), TRUE);
while (!done)
do_stuff();
cleanup();
cout << "bye";
}
我的处理程序被正确调用,但主线程之后没有恢复,所以“bye”从未出现。如果我捕获CTRL_C_EVENT并在控制台上按^C,则允许主线程继续并平稳退出。是否有一些方法可以在控制台关闭时允许主线程平稳退出?
我还尝试使用std::signal,但效果相同。对于^C有效,但对于窗口关闭无效。