Запись бесконечного цикла проста:
while(true){
//add whatever break condition here
}
Но это приведет к сбою производительности ЦП. Этот поток выполнения будет как можно больше от мощности процессора.
Каков наилучший способ снизить влияние на процессор?
Добавление некоторого Thread.Sleep(n)
должно выполнить трюк, но установка значения высокого тайм-аута для метода Sleep()
может указывать на невосприимчивое приложение к операционной системе.
Скажем, мне нужно выполнить задачу каждую минуту или около того в консольном приложении.
Мне нужно, чтобы Main()
работал в "бесконечном цикле", в то время как таймер запускает событие, которое будет выполнять задание. Я хотел бы сохранить Main()
с наименьшим воздействием на CPU.
Какие методы вы предлагаете. Sleep()
может быть в порядке, но, как я уже упоминал, это может указывать на невосприимчивый поток к операционной системе.
LATER EDIT:
Я хочу лучше объяснить, что я ищу:
-
Мне нужно консольное приложение, а не служба Windows. Консольные приложения могут имитировать службы Windows в системах Windows Mobile 6.x с Compact Framework.
-
Мне нужно, чтобы приложение поддерживалось до тех пор, пока работает устройство Windows Mobile.
-
Мы все знаем, что консольное приложение работает до тех пор, пока его статическая функция Main() запускается, поэтому мне нужен способ предотвращения выхода Main().
-
В особых ситуациях (например: обновление приложения) мне нужно попросить приложение остановиться, поэтому мне нужно бесконечно контактировать и проверить какое-то условие выхода. Например, поэтому
Console.ReadLine()
мне не подходит. Нет проверки состояния выхода. -
Что касается вышеизложенного, я по-прежнему хочу, чтобы функция Main() была как можно более дружественной к ресурсам. Пусть проверяется отпечаток функции, которая проверяет условие выхода.