我试图弄清楚如何使用Console.ReadLine和计时器。我的控制台程序设计为自动运行一个长进程,该进程在前一个进程完成后每30秒重新启动一次。不过,我想让用户能够通过输入命令来中断自动运行。但是,如果我使用Console.ReadLine(),它将等待用户输入某些内容,而如果30秒内没有输入任何内容,则希望程序通过循环继续进行。。。有什么想法吗?
例如:
RunProcess >等待30秒等待用户输入。如果没有:继续循环
非常感谢!
发布于 2011-01-27 20:15:19
您可以在一个单独的线程上运行您的计时器。当用户输入文本时,将其存储在两个线程都可以访问的变量中。当计时器滴答滴答时,查看是否输入了任何内容,并相应地继续。
确保线程安全:)
编辑:
您可以使用System.Threading.Timer每30秒进行一次勾选,并在其回调方法中检查是否设置了文本。
发布于 2011-01-27 22:02:23
不要使用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");
}
}https://stackoverflow.com/questions/4821290
复制相似问题