Warum führt das Schließen einer Konsole, die mit AllocConsole gestartet wurde, dazu, dass meine gesamte Anwendung beendet wird? Kann ich dieses Verhalten ändern?

Was ich möchte, ist, dass das Konsolenfenster einfach ausgeblendet wird oder besser noch, dass es ausgeblendet ist, aber ich möchte, dass meine Anwendung weiter ausgeführt wird. Ist das möglich? Ich möchte Console.WriteLine verwenden und die Konsole als Ausgabefenster verwenden. Ich möchte es verstecken und anzeigen können, und ich möchte nicht, dass die gesamte App stirbt, nur weil die Konsole geschlossen wurde.

BEARBEITEN

Code:

internal class SomeClass {

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

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

BEARBEITEN 2

Ich habe hier die akzeptierte Lösung ausprobiert [Capture-Konsole beenden C # ], gemäß dem Vorschlag in den Kommentaren zu dieser Frage. Der Beispielcode ist fehlerhaft, da der DLLImport "kernel32.dll" oder "kernel32" sein muss, nicht "Kernel32". Nachdem ich diese Änderung vorgenommen habe, erhalte ich eine Nachricht für CTRL_CLOSE_EVENT an meinen Handler, wenn ich im Konsolenfenster auf das X klicke. Wenn Sie jedoch FreeConsole aufrufen und / oder true zurückgeben, kann die Anwendung nicht beendet werden.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage