Приостановка, ввод команды и возобновление работы консольного приложения

#c# #multithreading #input #console-application #threadpool

#c# #многопоточность #ввод #консоль-приложение #пул потоков

Вопрос:

У меня есть консольное приложение C #, которое выполняет некоторую работу и продолжает печатать рыночные данные каждые 4 секунды.

Есть ли способ ввести команду с частотой обновления, чтобы изменить некоторые параметры и заставить приложение продолжить работу после нового ввода?

Комментарии:

1. Console.ReadLine

Ответ №1:

Да, вы могли бы. Давайте определим 2 потока, один для основного запуска, а второй для ожидания новой строки чтения. Использование глобальной переменной для изменения при обработке между 2 потоками, что:

  • Запуск (): печать строки из гиперпарама, затем переход в режим ожидания 4 секунды
  • Задача.Выполнить(() => …): запуск бесконечного цикла для чтения нового гиперпарама. Каждый цикл переходит в спящий режим на 100 мс. Это означает, что у пользователя есть не менее 40 шансов в течение 4 секунд изменить значение.
       static string HyperParam = "A";
    
      static void Running()
      {
          for (int i = 0; i < 100; i  )
          {
              Console.WriteLine($"Running with: {HyperParam}");
              Thread.Sleep(4000);
          }
      }
    
    
      static void Main(string[] args)
      {
          Task.Run(() =>
          {
              while (true)
              {
                  HyperParam = Console.ReadLine();
                  Thread.Sleep(100);
              }
          });
    
          Running();
      }
     

Результат:

введите описание изображения здесь