Rumah > pembangunan bahagian belakang > C++ > Bagaimana saya boleh menambah masa tamat ke konsol.readline ()?

Bagaimana saya boleh menambah masa tamat ke konsol.readline ()?

Barbara Streisand
Lepaskan: 2025-01-28 10:51:10
asal
980 orang telah melayarinya

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

Masukkan mekanisme masa tamat untuk memasuki konsol

Penerangan Masalah

Aplikasi konsol sering menggunakan

kaedah untuk menunjukkan input pengguna. Walau bagaimanapun, terutamanya dalam senario automasi, mungkin perlu untuk menyekat masa tindak balas pengguna. Ini membawa kepada soalan: Bagaimana kita menangani situasi ini untuk

menambah mekanisme masa tamat? Console.ReadLine() Console.ReadLine() Penyelesaian Lengkap

Walaupun terdapat beberapa batasan dalam penyelesaian terdahulu, seperti bergantung pada fungsi alternatif, tingkah laku yang tidak normal atau sumber -sumber menunggu apabila banyak panggilan, penyelesaian lanjutan ini dapat menyelesaikan masalah ini:

Kelebihan penyelesaian ini

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;
        }
    }
}
Salin selepas log masuk

<留> Fungsi Rizab: Berbeza dengan kaedah lain.

    <多> Pengurusan Pelbagai Panggilan:
  • Ia memastikan bahawa panggilan berterusan dapat berjalan secara normal tanpa menghasilkan beberapa benang atau kunci mati. <除> Menghapuskan sibuk menunggu: Console.ReadLine() Penyelesaian ini menggunakan multi -threaded untuk mengelakkan sisa dan sibuk menunggu sumber yang berkaitan.
  • <示> Penggunaan contoh
  • Untuk menerangkan penggunaannya, sila pertimbangkan contoh berikut:
  • atau, anda boleh menggunakan kaedah
dengan parameter output:

<论> Kesimpulan

Penyelesaian lanjutan ini menyediakan kaedah yang komprehensif dan cekap untuk menambah mekanisme masa tamat untuk
try
{
    Console.WriteLine("请在接下来的 5 秒内输入您的姓名。");
    string name = Reader.ReadLine(5000);
    Console.WriteLine("您好,{0}!", name);
}
catch (TimeoutException)
{
    Console.WriteLine("抱歉,您等待的时间过长。");
}
Salin selepas log masuk
untuk mengendalikan senario input pengguna dengan berkesan dengan had masa yang ditentukan.

Atas ialah kandungan terperinci Bagaimana saya boleh menambah masa tamat ke konsol.readline ()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan