¿Por qué el cierre de una consola que se inició con AllocConsole hace que se cierre toda la aplicación? ¿Puedo cambiar este comportamiento?

Lo que quiero que suceda es que la ventana de la consola simplemente desaparece, o mejor aún, que está oculta, pero quiero que mi aplicación siga funcionando. ¿Es eso posible? Quiero poder usar Console.WriteLine y hacer que la consola sirva como ventana de salida. Quiero poder ocultarlo y mostrarlo, y no quiero que toda la aplicación muera solo porque la consola estaba cerrada.

EDITAR

Código:

internal class SomeClass {

    [DllImport("kernel32")]
    private static extern bool AllocConsole();

    private static void Main() {
        AllocConsole();
        while(true) continue;
    }
}

Editar 2

He intentado la solución aceptada aquí [Salida de la consola de captura C # ], por la sugerencia en los comentarios sobre esta pregunta. El código de ejemplo tiene errores porque DLLImport necesita ser "kernel32.dll" o "kernel32", no "Kernel32". Después de hacer ese cambio, recibo un mensaje en mi controlador para CTRL_CLOSE_EVENT cuando hago clic en la X en la ventana de la consola. Sin embargo, llamar a FreeConsole y / o devolver true no impide que la aplicación finalice.