ホームページ > バックエンド開発 > C++ > Console.readline()にタイムアウトを追加するにはどうすればよいですか?

Console.readline()にタイムアウトを追加するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-28 10:51:10
オリジナル
929 人が閲覧しました

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

タイムアウトメカニズムを入力してコンソールを入力します

問題の説明

コンソールアプリケーションは、多くの場合、ユーザーの入力を示すために

メソッドを使用します。ただし、特に自動化シナリオでは、ユーザーの応答時間を制限する必要がある場合があります。これは質問につながります:タイムアウトメカニズムを追加するために、この状況にどのように対処しますか?

Console.ReadLine()完全な解決策Console.ReadLine()代替機能、異常な行動、または複数の呼び出しの場合にリソース集中待機など、以前のソリューションにはいくつかの制限があるかもしれませんが、この高度なソリューションはこれらの問題を効果的に解決します。

このソリューションの利点

予約機能:他の方法とは異なります

<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>
ログイン後にコピー

管理複数の呼び出し:複数のスレッドやデッドロックを生成せずに連続コールが正常に実行できるようにします。

忙しい待機を排除します:
    このソリューションは、廃棄物を避け、関連するリソースを待つのに忙しいためにマルチスレッドを使用します。
  • 例の例Console.ReadLine()その使用法を説明するために、次の例を考えてください。
  • または、出力パラメーターを使用してメソッドを使用できます。
  • 結論
  • この高度なソリューションは、指定された時間制限でユーザーの入力シナリオを効果的に処理するためのタイムアウトメカニズムをに追加する包括的で効率的な方法を提供します。

以上がConsole.readline()にタイムアウトを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート