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; } } }
<留> Fungsi Rizab: Berbeza dengan kaedah lain.
Console.ReadLine()
Penyelesaian ini menggunakan multi -threaded untuk mengelakkan sisa dan sibuk menunggu sumber yang berkaitan. <论> 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("抱歉,您等待的时间过长。"); }
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!