【发布时间】:2019-10-28 01:38:44
【问题描述】:
我需要一个计时器来在一段时间内通过控制台读取数据。我认为这是正确的,但似乎不是。请帮忙?
while ((DateTime.Now - initTime).Seconds <= limitTime)
{
Console.ReadLine();
}
【问题讨论】:
我需要一个计时器来在一段时间内通过控制台读取数据。我认为这是正确的,但似乎不是。请帮忙?
while ((DateTime.Now - initTime).Seconds <= limitTime)
{
Console.ReadLine();
}
【问题讨论】:
你可以试试这个:
var timeLimit = new TimeSpan(0, 0, 15); // 15 sec
var dateStart = DateTime.Now;
var inputs = new List<string>();
while ( DateTime.Now - dateStart <= timeLimit )
inputs.Add(Console.ReadLine());
我们使用TimeSpan 来设置允许的时间。
由于两个日期的减法是TimeSpan,我们将其与允许的时间进行比较,同时将输入字符串添加到列表中。
为示例添加列表,您可以管理循环内或循环外的输入。
【讨论】:
ReadKey 替换为 Read() 并管理 int 结果以实时控制循环。
我知道了,这是有人需要的功能。感谢奥利弗的帮助!
public static List<string> answerRange(byte maxTime)
{
TimeSpan maxT = new TimeSpan(0, 0, maxTime);
DateTime initTime = DateTime.Now;
List<string> userAnswers = new List<string>();
while ((DateTime.Now - initTime) <= maxT)
{
if (Console.KeyAvailable)
{
ConsoleKey key = Console.ReadKey().Key;
if (key == ConsoleKey.Enter)
{
break;
}
else
{
userAnswers.Add(key.ToString());
}
}
}
return userAnswers;
}
【讨论】: