VB.NET 2010控制台应用程序等待按键5秒,否则继续
好的,所以我试着在几个谷歌网站上查找,但是找不到 答案是这样的 它在VB.Net中作为一个控制台应用程序,我想要设置它的方式几乎就像BIOS条目一样,当你打开计算机时,你有几秒钟的时间按下一个键,如果没有按下它,它将跳过,这在一个带计时器的Windows窗体应用程序中是很容易的,但我在控制台应用程序中很难做到 迄今为止的代码:VB.NET 2010控制台应用程序等待按键5秒,否则继续,vb.net,timer,console-application,vb.net-2010,readkey,Vb.net,Timer,Console Application,Vb.net 2010,Readkey,好的,所以我试着在几个谷歌网站上查找,但是找不到 答案是这样的 它在VB.Net中作为一个控制台应用程序,我想要设置它的方式几乎就像BIOS条目一样,当你打开计算机时,你有几秒钟的时间按下一个键,如果没有按下它,它将跳过,这在一个带计时器的Windows窗体应用程序中是很容易的,但我在控制台应用程序中很难做到 迄今为止的代码: Console.WriteLine("Welcome to console, press F2 for advanced options.") ''Cons
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
Console.WriteLine(“欢迎使用Console,按F2键查看高级选项”)
尺寸stpw为秒表=秒表.StartNew
Dim waitfor As New TimeSpan(0,0,5)
将kp变暗为ConsoleKeyInfo
做
如果Console.key可用,则
kp=Console.ReadKey(True)
如果kp.Key=ConsoleKey.F2,则
退出Do
如果结束
如果结束
线程。线程。睡眠(100)
当stpw.已过<等待时循环
如果kp.Key=ConsoleKey.F2,则
控制台写入线(“F2按下”)
其他的
控制台写入线(“无F2”)
如果结束
Its可能以不同的语言复制,我无法转换。向下滚动并在VB.NET和C#中查看答案只需稍作努力。code Golf作为答案?非常有效,我多么希望如此!)即使经过一些研究,我也不知道秒表的功能。这被称为忙等待,可以说是最糟糕的等待类型。代码高尔夫解决方案在等待输入时不会像预期的那样消耗处理器。@GSerg-确实如此。我修好了。“你可以把高尔夫答案公布出来。”@DanielOakley-注意睡眠的增加