我在想如何使用Console.ReadLine和一个计时器。我的控制台程序设计为自动运行一个长时间的过程,这个过程在上一个过程完成后每30秒重新启动一次。我想让用户能够通过键入命令来中断自动运行。如果我使用Console.ReadLine(),它将等待直到用户输入内容,而如果在30秒内没有输入任何内容,我希望程序继续循环。 。 。有什么想法吗??Console.ReadLine Break
例如:
RunProcess>等待用户输入30秒。如果不是:继续循环
非常感谢!
我在想如何使用Console.ReadLine和一个计时器。我的控制台程序设计为自动运行一个长时间的过程,这个过程在上一个过程完成后每30秒重新启动一次。我想让用户能够通过键入命令来中断自动运行。如果我使用Console.ReadLine(),它将等待直到用户输入内容,而如果在30秒内没有输入任何内容,我希望程序继续循环。 。 。有什么想法吗??Console.ReadLine Break
例如:
RunProcess>等待用户输入30秒。如果不是:继续循环
非常感谢!
你可以在一个单独的线程上运行你的计时器。当用户输入文本时,将其存储在两个线程均可访问的变量中。当计时器滴答时,看看是否输入了任何内容并相应地继续。
一定是线程安全的:-)
编辑:
可以使用System.Threading.Timer
打勾每30秒,并在其回调方法,检查文本已设置。
请勿使用Console.ReadLine()
,但请检查Console.KeyAvailable
是否为真,然后阅读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");
}
}
的可能重复[如何添加超时到Console.ReadLine()?](http://stackoverflow.com/questions/57615/how-to-add-一个超时到控制台readline) – 2011-01-27 20:18:24
http://stackoverflow.com/questions/57615/how-to-add-a-timeout-to-console-readline – 2011-01-27 20:18:39