public MenuItem ChooseFromMenu(Menu menu, int millisecondTimeout)
 {
     using (var consoleListener = new ConsoleListener())
     {
         _interactionHappened = false;
         _interaction = new Interaction();
         consoleListener.InteractionHandled += consoleListener_InteractionHandled;
         consoleListener.Start();
         Console.Write("Enter choice: ");
         getInput.WaitOne(millisecondTimeout);
         if (menu.ValidChoice(_interaction.resultValue))
             return menu.GetMenuItem(_interaction.resultValue);
         else
             return null;
     }
 }
Beispiel #2
0
 public MenuItem ChooseFromMenu(Menu menu, int millisecondTimeout)
 {
     TaskCompletionSource<int> taskSource = new TaskCompletionSource<int>();
     Task<int> t = taskSource.Task;
     Task.Factory.StartNew(() =>
     {
         int fingers = GetFingers(5, 10, millisecondTimeout,
          (choice, renderer) =>
          {
              Console.WriteLine(choice.ToString());
              menu.Highlight(choice);
              renderer.DisplayMenu(menu);
          });
         taskSource.SetResult(fingers);
     });
     int value = t.Result;
     if (!menu.ValidChoice(value))
         return null;
     else
         return menu.GetMenuItem(value);
 }