Dlaczego zamknięcie konsoli uruchomionej za pomocą AllocConsole powoduje zakończenie całej mojej aplikacji? Czy mogę zmienić to zachowanie?

Chcę, aby okno konsoli po prostu zniknęło lub jeszcze lepiej, że jest ukryte, ale chcę, aby moja aplikacja działała. Czy to jest możliwe? Chcę móc używać Console.WriteLine i mieć konsolę jako okno wyjściowe. Chcę móc go ukryć i pokazać, a nie chcę, aby cała aplikacja umarła tylko dlatego, że konsola była zamknięta.

EDYTOWAĆ

Kod:

internal class SomeClass {

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

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

EDYCJA 2

Spróbowałem tutaj zaakceptowanego rozwiązania [Wyjście konsoli przechwytywania C # ], zgodnie z sugestią zawartą w komentarzach do tego pytania. Przykładowy kod jest podsłuchiwany przez to, że DLLImport musi być „kernel32.dll” lub „kernel32”, a nie „Kernel32”. Po dokonaniu tej zmiany otrzymuję wiadomość do mojego modułu obsługi dla CTRL_CLOSE_EVENT, gdy klikam X w oknie konsoli. Jednak wywołanie FreeConsole i / lub zwrócenie true nie uniemożliwia zakończenia aplikacji.

questionAnswers(5)

yourAnswerToTheQuestion