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

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

Barbara Streisand
Barbara StreisandOriginal
2025-01-28 10:51:10934Durchsuche

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>

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>

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!

Stellungnahme:
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