2013-03-20 2 views
1

Я пытаюсь получить пользовательский ввод от терминала в C#, но я хочу только ReadLine, когда пользователь начнет вводить текст. В принципе, способ, которым я настроен сейчас, заключается в том, что я нахожусь в цикле while, и я хочу либо проверить, чтобы получить сообщения или отправить их, но я не хочу застревать, пытаясь отправить их, вызвав ReadLine и ожидая отправки пользователем сообщения, если им нечего отправить в данный момент. Мой код выглядит примерно так:Проверьте и получите пользовательский ввод от терминала C#

While (true) 
{ 
    // If messages to be received 
     // Receive them 

    // Check to see if the user is typing input 
    if (Console.KeyAvailable) 
    { 
     string userInput = Console.ReadLine(); 
     // Do stuff... 
    } 

} 

В основном то, что происходит в том, что он работает совершенно нормально, но первое письмо о том, что пользователь не отображается в окне терминала, но это получить улавливаемый ReadLine не проблема. В любом случае я могу заставить это работать, чтобы пользователь мог сразу увидеть все, что они набирают?

Спасибо!

+0

Я бы посмотрел на многопоточность или события –

+0

Я бы хотел сделать это всего одним потоком – user1875195

+1

Чтобы проверить, не набирает ли пользователь, используйте событие с нажатием клавиши, если что-то подобное будет работать для вас. –

ответ

1

Вы можете использовать Console.ReadKey(true); для чтения отсутствующего элемента, затем прочитать другие части с помощью метода readline, добавить его к вашему входу.

+0

Спасибо! Это именно то, что я пытался сделать, отлично работал! – user1875195

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