如何强制用户在一定时间后输入?
How do I force user to input after certain time?
我想强制用户在一定时间后输入任何内容。我一直在使用类似的东西,但它有问题。
string input = Console.ReadLine();
while (repeat == true)
{
if (Time has passed)
{
SendKeys.Send("{ENTER}");
repeat = false;
}
else
repeat = true;
}
问题是它只是停留在 ReadLine 直到用户按下回车键。我也不想用ReadKey,因为我希望它能包含一个以上的字符。
这将等待 5 秒,将任何按键附加到字符串 input
。它会显示键入的每个字母。最后它退出循环并打印输入以进行确认。
var timer = new Timer(5000);
bool timeUp = false;
string input = "";
timer.Elapsed += (o,e) => { timeUp = true; };
timer.Enabled = true;
while(!timeUp) {
if (Console.KeyAvailable)
{
char pressed = Console.ReadKey(true).KeyChar;
Console.Write(pressed);
input+=pressed;
}
System.Threading.Thread.Sleep(100);
}
Console.WriteLine(input);
我会使用一个任务并等待它 5 秒。
static void Main(string[] args)
{
List<ConsoleKeyInfo> userInput = new List<ConsoleKeyInfo>();
var userInputTask = Task.Run(() =>
{
while (true)
userInput.Add(Console.ReadKey(true));
});
userInputTask.Wait(5000);
string userInputStr = new string(userInput.Select(p => p.KeyChar).ToArray());
Console.WriteLine("Time's up: you pressed '{0}'", userInputStr);
Console.ReadLine();
}
我想强制用户在一定时间后输入任何内容。我一直在使用类似的东西,但它有问题。
string input = Console.ReadLine();
while (repeat == true)
{
if (Time has passed)
{
SendKeys.Send("{ENTER}");
repeat = false;
}
else
repeat = true;
}
问题是它只是停留在 ReadLine 直到用户按下回车键。我也不想用ReadKey,因为我希望它能包含一个以上的字符。
这将等待 5 秒,将任何按键附加到字符串 input
。它会显示键入的每个字母。最后它退出循环并打印输入以进行确认。
var timer = new Timer(5000);
bool timeUp = false;
string input = "";
timer.Elapsed += (o,e) => { timeUp = true; };
timer.Enabled = true;
while(!timeUp) {
if (Console.KeyAvailable)
{
char pressed = Console.ReadKey(true).KeyChar;
Console.Write(pressed);
input+=pressed;
}
System.Threading.Thread.Sleep(100);
}
Console.WriteLine(input);
我会使用一个任务并等待它 5 秒。
static void Main(string[] args)
{
List<ConsoleKeyInfo> userInput = new List<ConsoleKeyInfo>();
var userInputTask = Task.Run(() =>
{
while (true)
userInput.Add(Console.ReadKey(true));
});
userInputTask.Wait(5000);
string userInputStr = new string(userInput.Select(p => p.KeyChar).ToArray());
Console.WriteLine("Time's up: you pressed '{0}'", userInputStr);
Console.ReadLine();
}