在 Console.ReadKey() 之前阻止 queing/preloading 控制台中的字符
Preventing queing/preloading a character in the console before Console.ReadKey()
当在 .NET 中调用 Console.ReadKey(true)
时,它会将用户的单个按键读取到控制台中。我注意到可以在 before 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()
之前按下一个键,示例程序将return:
You took 0 miliseconds or 0 second(s).
是否有已知的方法来防止这种行为?此问题出现在提示用户输入特定密钥的其他类型的控制台程序中。如果过早按下按键,有时用户甚至看不到提示。
Clears the console buffer and corresponding console window of display
information.
放
Console.Clear()
之前
Console.WriteLine("Press any key now!")
如果这没有帮助,您需要注意如果按下任何按钮或在最后 2- 3 秒以避免快速敲击。
下面的代码可以帮助你..测试用例..
Private Shared Sub Main(args As String())
'System.Threading.Thread.Sleep(4000)
'rejecting old key presses
While Console.KeyAvailable
Console.ReadKey()
End While
Console.ReadKey()
End Sub
当在 .NET 中调用 Console.ReadKey(true)
时,它会将用户的单个按键读取到控制台中。我注意到可以在 before 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()
之前按下一个键,示例程序将return:
You took 0 miliseconds or 0 second(s).
是否有已知的方法来防止这种行为?此问题出现在提示用户输入特定密钥的其他类型的控制台程序中。如果过早按下按键,有时用户甚至看不到提示。
Clears the console buffer and corresponding console window of display information.
放
Console.Clear()
之前
Console.WriteLine("Press any key now!")
如果这没有帮助,您需要注意如果按下任何按钮或在最后 2- 3 秒以避免快速敲击。
下面的代码可以帮助你..测试用例..
Private Shared Sub Main(args As String())
'System.Threading.Thread.Sleep(4000)
'rejecting old key presses
While Console.KeyAvailable
Console.ReadKey()
End While
Console.ReadKey()
End Sub