Problema de rutina SetConsoleCtrlHandler
Estoy escribiendo una aplicación de consola en C ++.
Utilizo SetConsoleCtrlHandler para cerrar el botón CTRL + C. Esto permite que todos mis hilos se detengan y salgan correctamente.
Uno de los subprocesos realiza algunos ahorros que requieren algo de tiempo para completarse y tengo algo de código para esperar en la rutina de manejo de la consola crtl. MSDN especifica que debería aparecer un cuadro después de 5 segundos durante CTRL_CLOSE_EVENT, pero en cambio mi proceso se cierra.
Esto también es molesto para la depuración de la aplicación de consola, ya que el proceso se cierra antes de que pueda avanzar y no sé cuál puede ser el problema (tengo Windows 7 de 64 bits).
Además, curiosamente, si mi rutina devuelve VERDADERO (simplemente deshabilitar la acción de cierre), todavía cierra la aplicación. Se llama a la rutina, por lo que SetConsoleCtrlHandler se instaló correctamente.
p.ej.:
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;
}
¿Algunas ideas?