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?

Respuestas a la pregunta(5)

Su respuesta a la pregunta