Постоянная проверка на нажатие клавишь

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

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

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

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


Ответы (1 шт):

Автор решения: aepot

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

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();
}

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

→ Ссылка