Maison >développement back-end >C++ >Comment puis-je ajouter un délai d'attente à console.readline ()?
Les applications de console utilisent souvent des méthodes
pour indiquer l'entrée utilisateur. Cependant, en particulier dans les scénarios d'automatisation, il peut être nécessaire de restreindre le temps de réponse de l'utilisateur. Cela conduit à une question: comment gérer cette situation à Add Timeout Mécanisme? Console.ReadLine()
Console.ReadLine()
La solution complète
Bien qu'il puisse y avoir certaines limites dans les solutions précédentes, comme s'appuyant sur des fonctions alternatives, un comportement anormal ou une attente intensive des ressources lorsque plusieurs appels, cette solution avancée résout efficacement ces problèmes:
Les avantages de cette solution
<code class="language-csharp">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("用户未在规定时间内提供输入。"); } public static bool TryReadLine(out string result, int timeOutMillisecs = Timeout.Infinite) { getInput.Set(); bool success = gotInput.WaitOne(timeOutMillisecs); if (success) { result = input; return true; } else { result = null; return false; } } }</code>
Fonction de réserve: Différente des autres méthodes.
Console.ReadLine()
Cette solution utilise multi-thread pour éviter les déchets et l'attente de ressources connexes. Conclusion
Cette solution avancée fournit une méthode complète et efficace pour ajouter un mécanisme de délai d'expiration à
<code class="language-csharp">try { Console.WriteLine("请在接下来的 5 秒内输入您的姓名。"); string name = Reader.ReadLine(5000); Console.WriteLine("您好,{0}!", name); } catch (TimeoutException) { Console.WriteLine("抱歉,您等待的时间过长。"); }</code>pour gérer efficacement les scénarios d'entrée utilisateur avec un délai spécifié.
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!