2

В ОС Windows есть служба, которая определяет состояние простоя. Подробности: условия простоя задачи

Компьютер считается бездействующим, если все процессоры и все диски простаивали более 90% за последние 15 минут и если в течение этого периода времени не было ввода с клавиатуры или мыши. Когда служба планировщика заданий обнаруживает, что компьютер находится в режиме ожидания, служба ожидает только ввода данных пользователем, чтобы отметить окончание состояния незанятости.

Это очень полезно для обычных ПК с клавиатурой и мышью. Мы можем использовать стандартный планировщик задач для запуска какого-либо процесса, такого как дефрагментация, когда ПК находится в режиме ожидания, и остановка, когда ПК не находится в режиме ожидания.

Но что мы должны использовать, когда мы используем автономный сервер без клавиатуры и мыши? Сервер иногда получает команды по TCP/IP и запускает работу процессора и жесткого диска. Но иногда загрузка процессора и жесткого диска на нулевом уровне.

Я хотел бы использовать эти периоды времени для запуска дефрагментации или другого процесса. Но это началось в "простое" состояние процессы должны быть прекращены, когда появятся другие команды. Таким образом, стандартные условия простоя не могут мне помочь, потому что мы не получили пользовательский ввод для остановки простоя. Мне нужно больше настраиваемого детектора состояния простоя. Автоматически запускаемые процессы не должны влиять на состояние бездействия, но ПК должен выходить из состояния бездействия, когда появится другой процесс. Что я должен использовать?

Может быть, существует какой-то предпочтительный планировщик задач? Или мне стоит написать какую-нибудь полезную утилиту на C #?

Я надеюсь, что это стандартная задача и все полезные утилиты уже скомпилированы :)

1 ответ1

-1

если пользовательский ввод недоступен, сервер должен сам контролировать время простоя, используя

BOOL WINAPI GetSystemTimes(
  _Out_opt_ LPFILETIME lpIdleTime,
  _Out_opt_ LPFILETIME lpKernelTime,
  _Out_opt_ LPFILETIME lpUserTime
);

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .