Heim > Backend-Entwicklung > C++ > Wie kann ich Console.readline () eine Auszeit hinzufügen?

Wie kann ich Console.readline () eine Auszeit hinzufügen?

Barbara Streisand
Freigeben: 2025-01-28 10:51:10
Original
929 Leute haben es durchsucht

How Can I Add a Timeout to Console.ReadLine()?

Geben Sie den Zeitüberschreitungsmechanismus ein, um die Konsole zu betreten

Problembeschreibung

Konsolenanwendungen verwenden häufig

Methoden, um die Benutzereingabe anzuzeigen. Insbesondere in Automatisierungsszenarien kann es jedoch erforderlich sein, die Reaktionszeit der Benutzer einzuschränken. Dies führt zu einer Frage: Wie gehen wir mit dieser Situation um

Zeitüberschreitungsmechanismus hinzu? Console.ReadLine() Console.ReadLine() Die vollständige Lösung

Obwohl es einige Einschränkungen in den vorherigen Lösungen gibt, z.

Die Vorteile dieser Lösung

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

Reservefunktion: Unterscheidet sich von anderen Methoden.

Verwaltung Mehrere Aufrufe:
    Es stellt sicher, dass kontinuierliche Anrufe normal ausgeführt werden können, ohne mehrere Threads oder tote Sperren zu generieren.
  • Beseitigen Sie beschäftigt zu warten: Diese Lösung verwendet Multi -Thread, um Abfälle und beschäftigt auf verwandte Ressourcen zu vermeiden. Console.ReadLine()
  • Beispiel verwendet
  • Um seine Verwendung zu erklären, betrachten Sie bitte das folgende Beispiel:
  • oder Sie können die Methode
  • mit Ausgangsparametern verwenden:

Schlussfolgerung

Diese erweiterte Lösung bietet eine umfassende und effiziente Methode, um einen Zeitüberschreitungsmechanismus zu

hinzuzufügen, um die Benutzereingangsszenarien mit einem bestimmten Zeitlimit effektiv zu verarbeiten.
<code class="language-csharp">try
{
    Console.WriteLine("请在接下来的 5 秒内输入您的姓名。");
    string name = Reader.ReadLine(5000);
    Console.WriteLine("您好,{0}!", name);
}
catch (TimeoutException)
{
    Console.WriteLine("抱歉,您等待的时间过长。");
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Console.readline () eine Auszeit hinzufügen?. 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