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.