在Console.ReadKey(true)
.NET 中调用时,它会将用户的单个按键读取到控制台中。我注意到一个字符可以在实际调用之前 Console.ReadKey()
输入,允许用户在提示之前预加载一个字符。我正在寻找一种方法来防止这种情况发生。
这里有一些示例代码可以更好地解释:
'Code runs a loop for a few seconds'
'...'
'At this point, a user can preload a key press'
Console.WriteLine("Press any key now!")
Dim startTime As DateTimeOffset = DateTimeOffset.Now()
Console.ReadKey(True) 'The console should only look for a keypress at THIS point'
Dim endTime As DateTimeOffset = DateTimeOffset.Now()
Dim miliseconds As Integer = (endTime.Subtract(startTime).TotalMilliseconds)
Dim seconds As Double = (endTime.Subtract(startTime).TotalSeconds)
Console.Clear()
Console.WriteLine("You took {0} miliseconds or {1} second(s).", miliseconds, seconds)
如果用户在 之前按下一个键Console.ReadKey()
,示例程序将返回:
您花费了 0 毫秒或 0 秒。
有没有已知的方法来防止这种行为?此问题出现在提示用户输入特定键的其他类型的控制台程序中。如果按键被提前按下,有时用户甚至不会看到提示。