Heim >Backend-Entwicklung >C++ >Wie implementieren Sie eine Zeitüberschreitung für console.readline ()?
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
<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>Für einen fortgeschritteneren Zeitüberschreitungsmechanismus können Multi -Threading -Methoden verwendet werden. Die Überwachung des Hintergrund -Threads hörte dem Eingang an und der Haupt -Thread wurde suspendiert. Nach dem Empfangen der Eingabe sendet der Hintergrund -Thread ein Signal, um den Hauptfaden fortzusetzen.
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.<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>
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!