Консоль не обрабатывает escape-последовательности

#c# #.net #ssh #terminal

#c# #.net #ssh #терминал

Вопрос:

Пытаюсь создать SSH-клиент, но наткнулся на препятствие. Я использую C # и библиотеку SSH.NET .

     class Program
{
    static void Main(string[] args)
    {
        using (var client = new SshClient("host", "username", "password"))
        {
            client.Connect();
            var stream = client.CreateShellStream("vt220", 80, 12, 400, 100, 1024);

            new Task(() => 
            { 
                while (true)
                {
                    if (stream.DataAvailable)
                    {
                        Console.Write((char)stream.ReadByte());
                    }
                }
            }).Start();
            new Task(() => 
            {
                while (true)
                {
                    if (stream.CanWrite)
                    {
                        stream.Write(Console.ReadKey(true).KeyChar.ToString());
                    }
                }
            }).Start();
            while (true) ;
        }
    }
}
  

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

Скриншот

На скриншоте я пытаюсь запустить команду «очистить», она не работает.

Как мне следует поступить с этим?

Комментарии:

1. Также зависит от вашей версии Windows. Это улучшилось только в последних сборках Windows 10, например, 2 года назад и далее.

2. Не используйте конструктор задач

3. @TanveerBadar Я использую последнюю версию Windows.

4. @MichaelRandall Был бы поток лучше?

5. Также не делайте этого while (true) ;