Sto creando un'applicazione console C# che eseguirà un processo infinito. Come posso mettere l'applicazione in "pausa" quando l'utente preme la chiave di escape?Come si "sospende" un'applicazione della console quando l'utente preme escape?
Una volta che l'utente preme il tasto di escape, voglio che l'opzione esca dall'applicazione o continui il ciclo nel punto in cui era stata interrotta. Non voglio alcuna discontinuità nel processo. Se premo Esc
al passo 100 dovrei essere in grado di raccogliere a destra indietro fino al punto 101.
Ecco il mio metodo finora:
// Runs the infinite loop application
public static void runLoop()
{
int count = 0;
while (Console.ReadKey().Key!= ConsoleKey.Escape)
{
WriteToConsole("Doing stuff.... Loop#" + count.ToString());
for (int step = 0; step <= int.MaxValue; step++) {
WriteToConsole("Performing step #" + step.ToString());
if (step == int.MaxValue)
{
step = 0; // Re-set the loop counter
}
}
count++;
}
WriteToConsole("Do you want to exit? y/n");
exitApplication(ReadFromConsole());
}
C'è un modo per verificare la chiave input dell'utente in un thread separato quindi mette in pausa il ciclo infinito quando l'altro thread vede un tasto Esc
premuto?
Certo, ma si sta andando ad avere per entrare nella filettatura. – BradleyDotNET
Quindi quello che stai cercando è un modo per controllare che la chiave di escape venga premuta, ma senza che il ciclo attenda l'input dell'utente, giusto? –
Hmm, piuttosto improbabile che l'utente possa mai capire di premere questo tasto senza un manuale. Premerà invece Ctrl + S, senza bisogno di aiuto. –