Um aplicativo que DEVE permanecer ativo

1

Eu preciso de uma maneira de forçar meu aplicativo (chamado de watchdog) permanecer operativo mesmo se eu o fechar intencionalmente. Esta aplicação, ao mesmo tempo, verifica a atividade de outras duas aplicações (controle de assistência e transferência de dados). Sempre que um desses dois aplicativos é fechado, o cão de guarda está pronto para torná-lo operacional mais uma vez. Mas quando o cão de guarda está em baixo, nenhum está mais operacional. Como eu posso fazer isso? Existe um serviço do Windows que possa lidar com essa missão?

Thanx pela sua ajuda!

Obrigado a todos vocês!

Depois de muita tentativa e erro, finalmente consegui meu aplicativo watchdog dando controle persistente sobre a operação de 'Controle de Assistência' e 'Transferência de Dados' aplicativos do Windows. Na verdade, não fazia sentido ter duas aplicações windows sendo controladas por um terceiro aplicação windows, principalmente por causa de sua própria natureza - eles existem para fornecer interação, por isso é bom para Alguém para parar o cão de guarda sempre que ele quiser. Essa é a caminho natural vai. Tomando a sugestão de Simon em conta, Eu decidi passar o controle para um novo nível, desenvolvendo meu watchdog agora como um serviço do windows. Eu sei que isso pode não ser a melhor maneira como o próprio serviço está se comunicando com aplicativos baseados em GUI, não é recomendado. Eu configurei meu serviço de watchdog para permitir a interação de desktop e agora nada impede que ele continue vivo a menos que, é claro, um usuário médio pare o serviço.

Se alguém precisar de um controle persistente como esse, eu acho isso pode ser uma solução bem definida e clara.

    
por MrTognio 22.11.2010 / 20:51

3 respostas

4

O Gerenciador de Controle de Serviço do Windows pode reiniciar um serviço se ele fechar inesperadamente, mas não reiniciará um serviço porque o serviço parou em resposta a uma mensagem de controle "Parar". Para eventos inesperados (como uma exceção não tratada), essa funcionalidade pode reiniciar seu programa automaticamente. Não ajudará, no entanto, se o serviço for interrompido por um usuário intencionalmente.

Parece que você pode escrever um "Watchdog Watchdog", mas você precisará de um "Watchdog Watchdog Watchdog". Em algum momento você só precisa desistir e assumir que seu software pode ser interrompido se alguém quiser.

Você pode usar uma "Tarefa Agendada" para verificar periodicamente se o seu programa de monitoramento está sendo executado e reiniciá-lo.

    
por 22.11.2010 / 20:56
0

Um pouco de fudge, mas se o aplicativo "watchdog" for um serviço local, você poderá registrar um evento no log de eventos quando for solicitado a parar pelo SCM. Você pode configurar um acionador de evento (consulte EventTriggers.exe ) que reinicia o serviço.

    
por 22.11.2010 / 21:08
0

A partir da sua descrição, parece que você também precisa de um sistema de monitoramento. Fazemos isso - temos vários scripts de watchdog, temos um único script topdog que monitora que todos os watchdogs listados estão em execução - e nós temos HPOV verificando a cada 4 horas para verificar se o topdog está em execução. Se não for, nós recebemos um alerta.

Editar - HPOV é um sistema de monitoramento externo, se você não soubesse. Para obter esse nível de confiabilidade e monitoramento, você precisa de monitoramento que acontece fora dos sistemas de negócios.

    
por 22.11.2010 / 21:09