Heim > Backend-Entwicklung > C++ > Wie implementieren Sie eine Zeitüberschreitung für console.readline ()?

Wie implementieren Sie eine Zeitüberschreitung für console.readline ()?

Barbara Streisand
Freigeben: 2025-01-28 10:36:10
Original
650 Leute haben es durchsucht

How to Implement a Timeout for Console.ReadLine()?

Hinzufügen eines Zeitüberschreitungsmechanismus

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>
Nach dem Login kopieren
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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage