C # Зацикливание процесса снова и снова, пока пользователь не нажмет клавишу - PullRequest
3 голосов
/ 19 мая 2010

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

Мои мысли по этому поводу следующие:

  1. Пользователь запускает процесс
  2. Процесс выполняется каждые 10 секунд
  3. Когда процесс не запущен, Console.ReadLine (); дает пользователю возможность нажать «q», чтобы остановить процесс

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

Ответы [ 2 ]

3 голосов
/ 19 мая 2010

Может быть BackgroundWorker может помочь.

Вот пример, который использует также отмену.
Есть также один на MSDN .

3 голосов
/ 19 мая 2010

Вы можете запустить процесс, выполняющий расписание, в отдельном потоке. Тогда основной поток всегда может реагировать на ввод пользователя. С другой стороны, если вы не можете уничтожить другой процесс во время его работы, конечный результат не будет отличаться. Все приложение не сможет остановиться, пока этот процесс не будет завершен. Однако если вы в любой момент можете уничтожить другой процесс, то несколько (два) потоков, вероятно, будут работать хорошо.

...