ajoutant un mécanisme de délai d'expiration
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
<code class="language-csharp">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; } }</code>
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.<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("用户未在规定时间内提供输入。"); } }</code>
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!