0

Хотелось сделать CLI прогу которая все время проверяет ни нажата ли какая нибудь кнопка.

Я понимаю что можно просто сделать так:

while (true)
{
    if(Keyboard.IsKeyPressed(Key.A)) 
    {
         //....
    {
}

Но нету ли более гуманного способа?

aepot
  • 49,560
Benzai
  • 25
  • 5

1 Answers1

0

По-простому как-то так это делается.

private static void ReadingLoop()
{
    ConsoleKeyInfo keyInfo;
    while ((keyInfo = Console.ReadKey(true)).Key != ConsoleKey.Escape)
    {
        switch (keyInfo.Key)
        {
            case ConsoleKey.A:
                // код, который выполняется при нажатии на кнопку
                break;
        }
    }
}
static async Task Main(string[] args)
{
    Task loop = Task.Run(() => ReadingLoop());
// ... какой-то код, который можно выполнять, пока в цикле читается клава

await loop; // подождать завершения
Console.WriteLine("Bye.");
Console.ReadKey();

}

Или вот более продвинутое решение.

aepot
  • 49,560