2013-12-17 3 views
5

Я создал простое консольное приложение, и мне нужно дать конкретное время для ввода пользователем keychar.Консоль ReadKey таймаут

Должен ли я использовать это?

System.Threading.Thread.Sleep(1000); 

Для тех, кто не понял, мне нужна программа, чтобы пропустить Console.ReadKey().KeyChar; после x секунд.

Возможно ли это?

+4

Используйте таймер. Сон заставит вас замолчать. –

+0

Этот ответ может быть тем, что вам нужно. , , http://stackoverflow.com/a/57655/18797 –

+0

@OndrejJanacek Что такое консольный графический интерфейс? – Tony

ответ

0

Задача:, если вы используете Thread.Sleep(), чтобы подождать 1 секунду, она висит в главной теме за данный период времени.

System.Timers.Timer Ожидание данного количества времени.

Попробуйте:

System.Timers.Timer timer1 = new System.Timers.Timer(); 
    timer1.Interval=1000;//one second 
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); 
    timer1.Start(); 
    char ch; 
    private void timer1_Tick(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     ch=Console.ReadKey().KeyChar; 
     //stop the timer whenever needed 
     //timer1.Stop(); 
    } 
+0

Это не то, что нужно OP, в вашем решении вы периодически вызываете 'Console.ReadKey()', но OP хотите ** пропустить ** _the Console.ReadKey(). KeyChar; после x секунд_ – Grundy

+0

@Grundy: это не точное решение, так как OP просто спросил: «Должен ли я использовать это? Thread.Sleep() 'отвечает на вопрос IMO. я бы предоставил точное решение, если он показал свой код. –

+0

ОП спросил об использовании его для конкретной проблемы, но в вашем ответе что-то еще – Grundy

9

Я хотел бы сделать это следующим образом:

DateTime beginWait = DateTime.Now; 
while (!Console.KeyAvailable && DateTime.Now.Subtract(beginWait).TotalSeconds < 5) 
    Thread.Sleep(250); 

if (!Console.KeyAvailable) 
    Console.WriteLine("You didn't press anything!"); 
else 
    Console.WriteLine("You pressed: {0}", Console.ReadKey().KeyChar); 
+1

, как сказал @OndrejJanacek 'Thread.Sleep (250);' будет заморозить gui – Grundy

+0

Это работает для меня хорошо! – Tony

+1

yep, потому что 250 мс заметно меньше 1 секунды, но gui все равно замораживается – Grundy

Смежные вопросы