Console.ReadLine Break

我试图找出如何使用Console.ReadLine和一个计时器。 我的控制台程序旨在自动运行一个长进程,此进程在上一个进程完成后每30秒重新启动一次。 我想通过键入命令让用户能够打破自动运行。 如果我使用Console.ReadLine(),它将等到用户输入内容,而我希望程序在30秒内没有输入任何内容的情况下继续循环。 。 。 有什么想法吗??

例如:

RunProcess>等待30秒进行用户输入。 如果没有:继续循环

非常感谢!

您可以在单独的线程上运行计时器。 当用户输入文本时,将其存储在两个线程都可访问的变量中。 当计时器滴答时,查看是否输入了任何内容并继续相应。

一定要线程安全:-)

编辑:

您可以使用System.Threading.Timer每30秒勾选一次,并在其回调方法中检查文本是否已设置。

不要使用Console.ReadLine()但检查Console.KeyAvailable是否为true,然后读取Console.ReadKey()以检查退出条件。

试试这个示例代码

 class Program { static bool done; static void Main(string[] args) { int count = 0; done = false; while (!done) { Thread.Sleep(2000); count++; Console.WriteLine("Calculation #" + count.ToString()); if (Console.KeyAvailable) { ConsoleKeyInfo key = Console.ReadKey(); if (key.Key == ConsoleKey.Escape) { done = true; } } } Console.WriteLine(); Console.WriteLine("end"); } }