#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(); }
Результат: