Я работаю над своими первыми приложениями .NET Core и, чтобы опробовать их кроссплатформенную функциональность, я настроил Ubuntu VM. После установки .NET я переместил свои файлы на виртуальную машину и запустил программу. В основном все работает отлично - за одним исключением.
Когда я использую Console.ReadKey(true);
, я должен получить нажатую клавишу, но консоль не должна показывать это. В Windows работает нормально, клавиша нажата и ничего не отображается. Но в Ubuntu консоль по-прежнему показывает клавиши, которые я нажимаю.
Итак, как я могу предотвратить это?
Похоже, что показанный символ увеличивается со сложностью моей программы, больше времени между вызовами Console.ReadKey(true);
означает больше отображаемых символов.
Надеюсь, ты поможешь мне, Нильс.
Код:
namespace test
{
class Program
{
static void Main(string[] args)
{
long lastrun = DateTime.Now.Ticks;
while (!PressedESC())
{
if (DateTime.Now.Ticks >= (lastrun + (TimeSpan.TicksPerSecond * 5)))
{
lastrun = DateTime.Now.Ticks;
// Here could be some dataprocessing but its not needed here...
// The problem already occures with this code.
}
}
}
private static bool PressedESC()
{
return Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape;
}
}
}
-> Показаны только несколько быстро набираемых символов
using System;
using System.Threading;
namespace test
{
class Program
{
static void Main(string[] args)
{
long lastrun = DateTime.Now.Ticks;
while (!PressedESC())
{
if (DateTime.Now.Ticks >= (lastrun + (TimeSpan.TicksPerSecond * 5)))
{
lastrun = DateTime.Now.Ticks;
// Here could be some dataprocessing but its not needed here...
// The problem already occures with this code.
}
Thread.Sleep(50);
}
}
private static bool PressedESC()
{
return Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape;
}
}
}
-> Отображается каждый тип символа I.
Что я пробовал:
- Ubuntu 18.04 LTS (Desktop) (VM) Terminal
- Ubuntu 18.04 LTS (Desktop) (VM) Gnome Terminal
- Ubuntu 18.04 LTS (Сервер) (VM) Терминал
- Ubuntu 18.04 LTS (Сервер) (VM) PuTTY (из Windows)
Результат всегда один и тот же.