[Console] Réponse utilisateur ou exécution dans quelques secondes
Salut,
Situation :
Je suis en train de créer une application console qui demande à l'utilisateur de confirmer un paramètre. Si l'utilisateur n'a pas répondu dans 5 secondes alors on exécute le code avec la valeur spécifiée.
Problème :
Avec le code si dessous je ne sors jamais de ma boucle "while(true)" pour lire la réponse de l'utilisateur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| static void Main()
{
bool reponse = true;
Console.WriteLine("Oui ou non (o/n) ?");
Delayed(5000, () => DoAction(reponse));
while (true)
{
var consoleKey = Console.ReadKey().Key;
if (consoleKey.Equals(ConsoleKey.O))
{
reponse = true;
break;
}
else if (consoleKey.Equals(ConsoleKey.N))
{
reponse = false;
break;
}
}
Console.WriteLine();
DoAction(reponse);
Console.ReadLine();
}
public static void DoAction(bool reponse)
{
if (reponse) Console.WriteLine("Oui");
else Console.WriteLine("Non");
}
private static void Delayed(int delay, Action action)
{
Timer timer = new Timer();
timer.Interval = delay;
timer.Elapsed += (s, e) =>
{
action();
timer.Stop();
};
timer.Start();
} |
Merci d'avance.