我在想如何使用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