VB.NET 2010 Console Application 等待按键5秒,没有则继续
VB.NET 2010 Console Application Wait for a key for 5 seconds, carry on if not
好的,所以我尝试在几个 Google 网站上查找但找不到
一个答案。
它在 VB.Net 中作为一个控制台应用程序,我想要设置它的方式几乎就像 BIOS 入口一样,当你打开你的计算机时,你有几秒钟的时间来按下一个键,如果它没有被按下它会跳过,这在带有计时器的 Windows 表单应用程序中很容易,但我在控制台应用程序中很难做到这一点。
到目前为止的代码:
Console.WriteLine("Welcome to console, press F2 for advanced options.")
''Console.ReadKey(keys.f2)
''Make it pause for 5 seconds, tried obvious threading,thread.sleep(5000) - that halts the application :/
是的,如果您理解我的意思并且能够提供帮助,我们将不胜感激。似乎没有任何明显的定时器功能。我正在考虑有一个慢慢增加到 100 的变量,并使用 thread.sleep,但我认为它获得密钥的机会很低,因为 .sleep 会停止应用程序。
也在考虑console.readkey,但不确定在等待过程中如何读取特定的密钥。
使用 Do 循环,Console.KeyAvailable,和秒表
Console.WriteLine("Welcome to console, press F2 for advanced options.")
Dim stpw As Stopwatch = Stopwatch.StartNew
Dim waitfor As New TimeSpan(0, 0, 5)
Dim kp As ConsoleKeyInfo
Do
If Console.KeyAvailable Then
kp = Console.ReadKey(True)
If kp.Key = ConsoleKey.F2 Then
Exit Do
End If
End If
Threading.Thread.Sleep(100)
Loop While stpw.Elapsed < waitfor
If kp.Key = ConsoleKey.F2 Then
Console.WriteLine("F2 press")
Else
Console.WriteLine("NO F2")
End If
好的,所以我尝试在几个 Google 网站上查找但找不到 一个答案。
它在 VB.Net 中作为一个控制台应用程序,我想要设置它的方式几乎就像 BIOS 入口一样,当你打开你的计算机时,你有几秒钟的时间来按下一个键,如果它没有被按下它会跳过,这在带有计时器的 Windows 表单应用程序中很容易,但我在控制台应用程序中很难做到这一点。
到目前为止的代码:
Console.WriteLine("Welcome to console, press F2 for advanced options.")
''Console.ReadKey(keys.f2)
''Make it pause for 5 seconds, tried obvious threading,thread.sleep(5000) - that halts the application :/
是的,如果您理解我的意思并且能够提供帮助,我们将不胜感激。似乎没有任何明显的定时器功能。我正在考虑有一个慢慢增加到 100 的变量,并使用 thread.sleep,但我认为它获得密钥的机会很低,因为 .sleep 会停止应用程序。 也在考虑console.readkey,但不确定在等待过程中如何读取特定的密钥。
使用 Do 循环,Console.KeyAvailable,和秒表
Console.WriteLine("Welcome to console, press F2 for advanced options.")
Dim stpw As Stopwatch = Stopwatch.StartNew
Dim waitfor As New TimeSpan(0, 0, 5)
Dim kp As ConsoleKeyInfo
Do
If Console.KeyAvailable Then
kp = Console.ReadKey(True)
If kp.Key = ConsoleKey.F2 Then
Exit Do
End If
End If
Threading.Thread.Sleep(100)
Loop While stpw.Elapsed < waitfor
If kp.Key = ConsoleKey.F2 Then
Console.WriteLine("F2 press")
Else
Console.WriteLine("NO F2")
End If