Я написал программу на C #, которая работает в фоновом режиме в значительной степени безупречно, но она замедляется, если машина заблокирована и оставлена одна.
Включает и выключает встроенный светодиод каждые 100 миллисекунд,100 миллисекунд синхронизируются вызовом System.Threading.Thread.Sleep (100).(Это для системы без наушников (без клавиатуры или монитора), которая должна мигать для обозначения различных состояний.)
Проблема возникает, когда система остается на некоторое время одна, и рабочий стол блокируется ... мигаетостанавливается ... но если я вернусь к машине и войду в систему (сейчас она не без головы), то светодиод начнет увеличиваться и снова мигать на полной скорости.
Я подозреваю, что Windows может использовать какую-то схему управления питанием и замедляет процесс для экономии энергии (?).
Для ясности, устройство никогда не переходит в состояние «сна» или «гибернации», и процесс возвращается в нормальное положение, как только я снова вхожу в систему и на секунду перемещаю мышь ...Процесс запускается как зарегистрированный пользователь с правами администратора.
Определенно на этом компьютере нет антивируса.Используемые ресурсы (память / ЦП) ничтожны и в основном равны до и после.
Кто-нибудь знает, как создать или выполнить процесс C # таким образом, чтобы он продолжал работать с нормальной скоростью, даже если пользователь заблокировалрабочий стол и ушел на несколько часов?
РЕДАКТИРОВАТЬ: Включен образец кода из цикла:
while (true) {
foreach (var step in steps)
{
var mode = step.Mode;
var millis = step.Millis;
switch (mode.ToUpper())
{
//Set LED as per Mode Switch
}
System.Threading.Thread.Sleep(millis);
}
if (!loopForever) {
//User wanted single pattern and then exit
Environment.Exit(0);
}
}