Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.NET 2010控制台应用程序等待按键5秒,否则继续_Vb.net_Timer_Console Application_Vb.net 2010_Readkey - Fatal编程技术网

VB.NET 2010控制台应用程序等待按键5秒,否则继续

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

好的,所以我试着在几个谷歌网站上查找,但是找不到 答案是这样的

它在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
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-注意睡眠的增加