Por que fechar um console que foi iniciado com o AllocConsole faz com que todo o meu aplicativo seja encerrado? Posso mudar esse comportamento?

O que eu quero que aconteça é que a janela do console simplesmente desapareça, ou melhor ainda, que esteja oculta, mas quero que meu aplicativo continue em execução. Isso é possível? Eu quero ser capaz de usar Console.WriteLine e ter o console serve como uma janela de saída. Eu quero ser capaz de esconder e mostrar, e eu não quero que o aplicativo inteiro morra só porque o console foi fechado.

EDITAR

Código:

internal class SomeClass {

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

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

EDIT 2

Eu tentei a solução aceita aqui [Capturar a saída do console C # ], de acordo com a sugestão nos comentários sobre esta questão. O código de exemplo está com bug em que o DLLImport precisa ser "kernel32.dll" ou "kernel32", não "Kernel32". Depois de fazer essa alteração, estou recebendo uma mensagem para meu manipulador para CTRL_CLOSE_EVENT quando clico no X na janela do console. No entanto, chamar FreeConsole e / ou retornar true não impede que o aplicativo seja finalizado.

questionAnswers(5)

yourAnswerToTheQuestion