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