如何在一定时间后强制用户输入?

时间:2015-03-21 00:43:35

标签: c# vb.net console-application

我想在一段时间后强制输入用户输入的内容。我一直在使用这样的东西,但它有问题。

string input = Console.ReadLine();

while (repeat == true)
{
if (Time has passed)
{
    SendKeys.Send("{ENTER}");
    repeat = false;
}

else
    repeat = true;
}

问题是它只是停留在ReadLine,直到用户按下回车键。我也不想使用ReadKey,因为我希望它能够包含多个字符。

2 个答案:

答案 0 :(得分:1)

我使用任务并等待它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();
    }

答案 1 :(得分:0)

这将等待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);