Como criar um menu de navegação no aplicativo dotne

Criei um aplicativo de console que possui um menu que permite navegar entre os itens de menu. Eu manejo a lógica de navegação neste método:

public virtual void updateMenu()
{
    switch (Console.ReadKey(true).Key)
    {
        case ConsoleKey.UpArrow:
            {
                if (cursor > 0)
                {
                    cursor--;
                    Console.Clear();
                    drawWithHeader();
                }
            }
            break;
        case ConsoleKey.DownArrow:
            {
                if (cursor < (menuItemList.Count - 1))
                {
                    cursor++;
                    Console.Clear();
                    drawWithHeader();
                }
            }
            break;
        case ConsoleKey.Escape:
            {
                if (ParentMenu != null)
                {

                    hideMenu();
                }
            }
            break;
        case ConsoleKey.Enter:
            {
                Console.Clear();
                drawHeader();
                Console.CursorVisible = true;
                menuItemList[cursor].Action();
                Console.CursorVisible = false;
                Console.Clear();
                drawWithHeader();
            }
            break;
        default:
            {
                // Unsuported key. Do nothing....
            }
            break;
    }
}

aqui a classe completa.

gora, no Windows, tudo funciona bem, mas quando executo esse aplicativo no meu Linux comsystemd Eu recebo

Exceção não tratada: System.InvalidOperationException: Não é possível ler a chave quando um aplicativo não possui um console ou quando a entrada do console foi redirecionada. Tente Console.Read.

A exibição do stacktrace:

at System.ConsolePal.ReadKey(Boolean intercept)
at System.Console.ReadKey();
at AppRazen.Menu.ConsoleMenu.UpdateMenu();  

Após algumas pesquisas, descobri que esse problema está relacionado aoReadKey() método não é totalmente compatível com linux. E a solução propostaAqu simplesmente não funciona no meu caso, porque o usuário usouOminSharp.

Eu também tentei definirReadKey(false) mas isso não resolveu o problema, e eu também tentei lidar com todas as coisas dentro deUpdateMenu comConsole.Read() mas o console parece preso.

Observe que esse problema ocorrerá apenas quando eu executar o meu script no supervisor linux, não com o comando padrão comodotnet AppRazen.dll

Essencialmente, estou executando o script com umsystemd serviço como este:

[Unit]
Description = Daemon description

[Service]
ExecStart = /usr/bin/dotnet /home/root/Desktop/publish/AppRazen.dll
WorkingDirectory= /home/root/Desktop/publish
Restart = always
RestartSec = 3

[Install]
WantedBy = multi-user.target

Sinceramente, não sei como posso corrigir isso. Alguém tem alguma idéia?

Desde já, obrigado

questionAnswers(1)

yourAnswerToTheQuestion