Console.ReadLine()
Die Konsolenanwendung erfordert, dass die Benutzereingabe ausgeführt wird. Was wird jedoch passieren, wenn der Benutzer zu lange antwortet? Durch die Implementierung des Zeit -OUT -Mechanismus kann Ihr Programm auch dann weiter ausführen, wenn der Benutzer innerhalb der angegebenen Zeit keine Eingaben bereitstellt.
Implementierungsmethode
Die direkteste Methode ist die Verwendung des WHHE -Zyklus mit einem Timer, um die Eingabe regelmäßig zu überprüfen. Wenn es eine bestimmte Zeit ohne Input braucht, kann das Programm das Auszeitsabschluss herauswerfen.Die erweiterte Methode zur Verwendung von AutoresetEvent
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; } }
Diese beiden Beispiele zeigen, wie Timeout -Funktionen zu
hinzugefügt werden können. Welche Methode zu wählen, hängt von Ihren spezifischen Anforderungen und Ihrer Toleranz für die Codekomplexität ab.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("用户未在规定时间内提供输入。"); } }
Das obige ist der detaillierte Inhalt vonWie implementieren Sie eine Zeitüberschreitung für console.readline ()?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!