Консольное приложение C# - Как мне всегда читать ввод с консоли?

В настоящее время я пишу консольное приложение, которое использует много многопоточности. Я хочу иметь возможность всегда разрешать пользователю вводить что-либо в консоль, однако, потоки будут регулярно выводиться на консоль, но я хочу, чтобы пользователи всегда могли вводить что-либо в консоль, и я мог обрабатывать ввод,

Как бы я этого достиг? Я ничего не нашел в Интернете об этом?

Заранее спасибо!

Это для C# кстати!

1 ответ

class Program
{
  static void Main(string[] args)
  {
    // cancellation by keyboard string
    CancellationTokenSource cts = new CancellationTokenSource();

    // thread that listens for keyboard input
    var kbTask = Task.Run(() =>
    {
      while(true)
      {
        string userInput = Console.ReadLine();
        if(userInput == "c")
        {
          cts.Cancel();
          break;
        }
        else
        {
          // handle input
          Console.WriteLine("Executing user command {0}...", userInput);
        }
      }
    });

    // thread that performs main work
    Task.Run(() => DoWork(), cts.Token);

    Console.WriteLine("Type commands followed by 'ENTER'");
    Console.WriteLine("Enter 'C' to end program.");
    Console.WriteLine();

    // keep Console running until cancellation token is invoked
    kbTask.Wait();
  }

  static void DoWork()
  {
    while(true)
    {
      Thread.Sleep(3000);
      Console.WriteLine("Doing work...");
    }
  }
}
Другие вопросы по тегам