Console.ReadLine()
L'application de console nécessite l'exécution de l'entrée de l'utilisateur, mais que se passera-t-il si l'utilisateur répond trop longtemps? La mise en œuvre du mécanisme Time -out permet à votre programme de continuer à s'exécuter même si l'utilisateur ne fournit pas d'entrée dans le délai spécifié.
Méthode d'implémentation
La méthode la plus directe consiste à utiliser le cycle while avec une minuterie pour vérifier régulièrement l'entrée. S'il faut un certain temps sans entrée, le programme peut rejeter le délai d'attente.La méthode avancée d'utilisation de l'autoresevent
using System; using System.Threading; public class ConsoleTimeout { public static string InputWithTimeout(int timeoutSeconds) { Console.WriteLine("请输入内容:"); var timer = new Timer((_) => { throw new TimeoutException("输入超时"); }, null, timeoutSeconds * 1000, Timeout.Infinite); string input = Console.ReadLine(); timer.Dispose(); return input; } }
Ces deux exemples montrent comment ajouter des fonctions de délai d'expiration à
. La méthode à choisir dépend de vos besoins spécifiques et de votre tolérance à la complexité du code.class Reader { private static Thread inputThread; private static AutoResetEvent getInput, gotInput; private static string input; static Reader() { getInput = new AutoResetEvent(false); gotInput = new AutoResetEvent(false); inputThread = new Thread(reader); inputThread.IsBackground = true; inputThread.Start(); } private static void reader() { while (true) { getInput.WaitOne(); input = Console.ReadLine(); gotInput.Set(); } } public static string ReadLine(int timeOutMillisecs = Timeout.Infinite) { getInput.Set(); bool success = gotInput.WaitOne(timeOutMillisecs); if (success) return input; else throw new TimeoutException("用户未在规定时间内提供输入。"); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!