TreatControlCAsInput проблема. Это ошибка?
Просто наткнулся на проблему, описанную ниже. Если "Console.TreatControlCAsInput = true;", необходимо дважды нажать [enter] в ReadLine().
Я написал демо-код ниже. Я правильно предположил, что этот код демонстрирует ошибку в.NET 4 Framework?
Console.Write("Test 1: Console.TreatControlCAsInput = false\nType \"hello\": ");
{
string readline = Console.ReadLine(); // type "hello" [enter].
Console.WriteLine("You typed: {0}", readline);
// Prints "hello".
}
Console.Write("Test 2: Console.TreatControlCAsInput = true\nType \"hello\": ");
Console.TreatControlCAsInput = true;
{
string readline = Console.ReadLine(); // type "hello" [enter].
Console.WriteLine("You typed: {0}", readline);
// Should print "hello" - but instead, you have to press [enter]
// *twice* to complete the ReadLine() command, and it adds a "\r"
// rather than a "\n" to the output (so it overwrites the original line)
}
// This bug is a fatal error, because it makes all ReadLine() commands unusable.
Console.Write("[any key to exit]");
Console.ReadKey();
2 ответа
Решение
Это известная проблема с подсистемой консоли Windows, о которой было сообщено в Microsoft Connect еще в 2006 году.
Написал Microsoft 22.05.2007 в 12:37
Здравствуйте, ARos, Спасибо за сообщение об этой проблеме в System.Console. Такое поведение существует в подсистеме Windows Console, как продемонстрировано в приложении Win32 C. Я сообщил о проблеме владельцу подсистемы Windows Console.
Спасибо джош
Не ошибка в Framework, но это похоже на ошибку в консольной подсистеме Windows.