C# Console Schließen!?

...komplette Frage anzeigen

1 Antwort

Um die Schleife nicht zu blockieren benutzt man die KeyAvailable Property von Console.

Der Trick ist es zu prüfen, ob eine Taste gedrückt wurde und diese dann auszuwerten:

var info = new ConsoleKeyInfo();
do {
    while (!Console.KeyAvailable) {
        // hier laeuft das Programm
    }
    info = Console.ReadKey(true);
    // true, damit die Taste im Konsolenfenster nicht angezeigt wird
} while (info.Key != ConsoleKey.Escape);

Falls dir das nichts weiterhilft, kannst du auch im Main einen asynchronen Thread starten, indem die Logik abläuft und im Hauptthread auf eine Konsoleneingabe warten und auf ESC abprüfen.

Also z.B. so:

void Main()
{
    DoWorkAsync();
    while (Console.ReadKey(true).Key != Console.Key) {}
    Application.Exit();
}

Und die dazugehörigen statischen Methoden DoWorkAsync und DoWork:

public static async void Task DoWorkAsync() {
    Task.Run(() => DoWork());
}
public static void DoWork() {
    // Logik läuft hier ab ...
}

Die Klasse Task befindet sich im Namespace System.Threading.Tasks

0
@GustavAT

Für die Konsoleanwendung Environment.Exit(0) und für Forms-Anwendungen Application.Exit()

0

Was möchtest Du wissen?