Я пишу консольное приложение на С++.
Я использую SetConsoleCtrlHandler для блокировки закрытия и CTRL + C. Это позволяет всем моим потокам нормально остановиться и выйти.
Один из потоков выполняет некоторую экономию, требующую некоторого времени для завершения, и у меня есть некоторый код, который будет ждать в рутине crtl консоли. MSDN указывает, что окно должно появиться через 5 секунд для CTRL_CLOSE_EVENT, но вместо этого мой процесс завершается.
Это раздражает и для отладки консольного приложения, так как процесс завершается до того, как вы сможете пройти, и я не знаю, что может быть проблемой (у меня 64-битные версии Windows 7).
Кроме того, как ни странно, если моя процедура возвращает TRUE (просто отключить действие close), она все равно закрывает приложение. Подпрограмма вызывается, поэтому SetConsoleCtrlHandler был успешно установлен.
например:.
BOOL WINAPI ConsoleHandlerRoutine(DWORD dwCtrlType)
{
if (dwCtrlType == CTRL_CLOSE_EVENT)
{
return TRUE;
}
return FALSE;
}
int _tmain(int argc, _TCHAR* argv[])
{
BOOL ret = SetConsoleCtrlHandler(ConsoleHandlerRoutine, TRUE);
while (true)
{
Sleep(1000);
}
return 0;
}
Любые идеи?