0

好的,所以我尝试在几个 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,但不确定如何在等待过程中读取特定的键。

4

1 回答 1

2

使用 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
于 2017-06-13T11:12:05.203 回答