Nano Hash - криптовалюты, майнинг, программирование

Определить, не нажата ли клавиша, не дожидаясь нажатия клавиши в консольном приложении С#

Как я могу проверить, не нажата ли конкретная клавиша, и ничего не делать, если нажата другая клавиша или вообще не нажата?

Я хочу что-то вроде этого псевдокода в консольном приложении Visual C#:

while (true) {
    if (IsKeyDown(Escape)) { //checks if Escape is down
        println("Press enter to resume");
        waitKey(Enter); //waits until Enter is pressed
    }
    //do something
}

Этот цикл будет продолжать что-то делать, пока не будет нажата клавиша Escape. Если нажата клавиша Escape, цикл приостановится до тех пор, пока не будет нажата клавиша Enter.

Я пробовал:

  • Console.ReadKey() - просто приостановит цикл, пока не будет нажата любая клавиша.
  • Keyboard.IsKeyDown() - не действует в консольном приложении.

  • println — это Java. Вы уверены, что у вас есть правильные теги? :П 23.11.2013
  • быстрый поиск Google дал мне это: был нажат в консоли"> stackoverflow.com/questions/1770518/ 23.11.2013
  • Вам нужно событие, KeyUp например 23.11.2013
  • Другие ответы на прослушивание Console.KeyAvailable хороши, но это также может быть полезно: stackoverflow.com/questions/10988197/ 23.11.2013

Ответы:


1

Это то, что вы ищите?

using System;

class Example 
{
  public static void Main() 
  {
    ConsoleKeyInfo cki;
    // Prevent example from ending if CTL+C is pressed.
    Console.TreatControlCAsInput = true;

    Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
    Console.WriteLine("Press the Escape (Esc) key to quit: \n");
    do 
    {
       cki = Console.ReadKey();
       Console.Write(" --- You pressed ");
       if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+");
       if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+");
       if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+");
       Console.WriteLine(cki.Key.ToString());
     } while (cki.Key != ConsoleKey.Escape);
  }
 }

http://msdn.microsoft.com/en-us/library/471w8d85%28v=vs.110%29.aspx

22.11.2013
  • У меня есть точный ответ... while(true) { Console.Write(DateTime.Now.ToString(ss)); if (Console.KeyAvailable) { if (Console.ReadKey().Key == ConsoleKey.Escape) { do { Console.WriteLine(Нажмите Enter для возобновления); } while (Console.ReadKey().Key != ConsoleKey.Enter); } } Thread.Sleep(100);} 26.01.2016
  • Я понимаю, что этот вопрос закрыт, но не было бы полезно получить точный ответ образца кода на этот вопрос в соответствии с псевдокодом в вопросе? 26.01.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..