se nenhuma entrada do usuário estiver disponível, o servidor deve monitorar o próprio tempo ocioso usando
BOOL WINAPI GetSystemTimes(
_Out_opt_ LPFILETIME lpIdleTime,
_Out_opt_ LPFILETIME lpKernelTime,
_Out_opt_ LPFILETIME lpUserTime
);
O sistema operacional Windows possui um serviço que detecta o estado inativo. Detalhes: Condições ociosas da tarefa
O computador é considerado ocioso se todos os processadores e todos os discos estiverem inativos por mais de 90% dos últimos 15 minutos e se não houver entrada de teclado ou mouse durante esse período de tempo. Quando o serviço Agendador de tarefas detecta que o computador está ocioso, o serviço só aguarda a entrada do usuário para marcar o fim do estado ocioso.
É muito útil para PCs comuns que possuem teclado e mouse. Podemos usar o agendador de tarefas padrão para iniciar algum processo, como desfragmentar quando o PC estiver ocioso e parar quando o computador não estiver em estado inativo.
Mas o que devemos usar quando usamos um servidor autônomo sem teclado e mouse? O servidor às vezes recebe comandos por TCP / IP e inicia a atividade da CPU e HDD. Mas, às vezes, a atividade da CPU e HDD no nível zero.
Eu gostaria de usar este período de tempo para iniciar a desfragmentação ou outro processo. Mas isso começou em processos de estado "ociosos" deve ser finalizado quando outros comandos aparecerão. Portanto, condições de estado ocioso padrão não podem me ajudar porque não temos a entrada do usuário para parar o estado inativo. Preciso de mais detector de estado ocioso personalizável. Os processos iniciados automaticamente não devem influenciar para o estado ocioso, mas o PC deve sair do estado ocioso quando outro processo ocorrer. O que devo usar?
Talvez exista algum agendador de tarefas avançado? Ou eu deveria escrever algum utilitário útil em C #?
Espero que seja uma tarefa padrão e todos os utilitários úteis já compilados:)
se nenhuma entrada do usuário estiver disponível, o servidor deve monitorar o próprio tempo ocioso usando
BOOL WINAPI GetSystemTimes(
_Out_opt_ LPFILETIME lpIdleTime,
_Out_opt_ LPFILETIME lpKernelTime,
_Out_opt_ LPFILETIME lpUserTime
);