Pergunta

Eu tenho uma tarefa que precisa ser executado a cada 30 segundos. Eu posso fazer uma de duas coisas:

  1. Escrever um aplicativo de linha de comando que executa a tarefa uma vez, espera 30 segundos, executa-lo novamente e, em seguida, sai. Eu posso agendar esta tarefa com tarefas agendadas no Windows para executar cada minuto

  2. escrever um serviço que executa uma tarefa repetidamente enquanto espera de 30 segundos entre cada execução.

Number 1 é mais trivial, na minha opinião e eu iria optar por fazê-lo desta maneira por padrão. Estou wimping fora? Existe uma razão por que eu deveria fazer deste um uma tarefa agendada serviço e não? Quais são os prós e contras de ambos e que você escolheria no final?

Foi útil?

Solução

eu li um post bom blog sobre esta questão recentemente . Ele entra em um monte de boas razões pelas quais você deve não escrever um serviço para executar um trabalho recorrente. Além disso, essa pergunta tem sido feita antes:

https://stackoverflow.com/questions / 390307 / windows-service-vs-agendadas-tarefa Windows Service ou tarefa agendada, qual nós prefere?

Uma vantagem de usar a tarefa agendada, é que, se há algum risco potencial envolvido com a execução do serviço, como um vazamento de memória ou pendurado conexão de rede, em seguida, o serviço Windows pode potencialmente pendurar aroung por um longo tempo, afetando adversamente outra Comercial. Por outro lado, a tarefa agendada é escrito para ser curta corrida, por isso mesmo que ele faz vazamento, o efeito é minimizado.

Por outro lado, alguém em uma das perguntas acima comentou que o programador tem um limite de precisão de algum lugar no intervalo de 1 minuto, então você pode ver que o programador não é capaz de executar a sua tarefa a cada 30 segundos, com precisão.

Obviamente que há uma série de vantagens e desvantagens a considerar, mas espero que isto irá ajudá-lo a fazer uma boa decisão.

Outras dicas

Se você está tentando executar a cada 30 segundos, eu iria para a opção 2. Isso é muito bonito um trabalho continuamente correndo, nesse caso. A sobrecarga de iniciar e parar o processo é provavelmente maior do que o próprio processo, especialmente se você usar um temporizador apropriado.

Se você fizer um trabalho que está sendo executado uma vez por dia (ou algumas vezes por dia), então eu iria para a opção 1 -. Usando uma tarefa agendada

O agendador de tarefas no Windows parece um flakey pouco na minha opinião. Eu acho que você poderia obter um resultado mais confiável executado como um serviço.

Além disso, um serviço poderia manter recursos na memória, como a leitura de entrada de um arquivo, e só tem que fazer isso no arranque do serviço, e não a cada 30 segundos.

30 segundos é um pequena intervalo (relativamente falando) entre os ciclos de processamento. Como os outros eu tenho minhas preocupações com o agendador de tarefas e estou com medo de tal um curto intervalo só vai agravar os problemas que podem surgir se você tomou essa abordagem. Se este fosse o meu projeto que eu seria quase certamente ir com o serviço.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top