É uma aplicação com “bandeja do sistema” ícone OK para um programador continuamente em execução, ou devo criar um serviço do Windows?

StackOverflow https://stackoverflow.com/questions/1425599

  •  07-07-2019
  •  | 
  •  

Pergunta

Exigência - Eu tenho uma tarefa periódica eu quero correr em um ambiente Windows para a minha candidatura. Ela terá uma interface simples que permite que algumas configurações básicas (por exemplo, URLs e quantas vezes para executá-lo). Eu quero que ele seja executado a cada X horas (configurável) quando a máquina está em execução.

Pergunta - Eu só criar um aplicativo com uma presença na bandeja do sistema para isso? Ou deveria ser a criação de um serviço que tem uma interface separada que ganchos para ele.

Pelo caminho - eu sou um novato C # desenvolvimento utilizando o Visual Studio Express, tenha em mente. Além disso, se você poderia dar uma visão geral do projeto do que você recomendaria que seria ótimo para alguém novo para isso (por exemplo, se você sugerir um serviço, isso significa que você realmente precisa de um aplicativo para o serviço, e outra aplicação que tem uma interface que faz a configuração para o serviço?)

Foi útil?

Solução

Eu desenvolvi uma aplicação como no ano passado. Um aplicativo Windows Forms simples que tem apenas um ícone da bandeja. O usuário é capaz de configurar o aplicativo através de um menu de contexto (mostrado quando o usuário clica com o botão direito no ícone da bandeja). Eu usei um temporizador que aciona o evento decorrido ...

Se esta aplicação será a única a fazer algumas tarefas em tempo hábil, em seguida, ir apenas com um aplicativo Windows Forms com um ícone da bandeja. Mas se haverá várias aplicações possíveis que podem enviar entrada e provocar alguma atividade, então você deve considerar a mudança a funcionalidade comum em um serviço do Windows. Você também deve considerar o uso de um serviço do Windows se o aplicativo será executado em uma máquina com serviços de terminal (múltiplos usuários -> várias instâncias do seu aplicativo).

Eu não usaria uma tarefa agendada! É menos amigável ...

-Pavel Nikolov

Outras dicas

Se você está procurando algo simples, considere o uso do Windows Scheduler para agendar os trabalhos, um calço para executar os trabalhos após programador inicia-lo e um utilitário de configuração que permite a configuração. Mas eu teria que recomendo que você avaliar como flexível e como de confiança os trabalhos precisam ser. Se é ok se os trabalhos não são executados de forma consistente, em seguida, uma aplicação do usuário na área de notificação seria suficiente. Mas se o trabalho é crucial para uma função do negócio ou alguma outra operação, eu iria com programador ou o serviço. Se você fizer um serviço, você teria um utilitário de configuração e um serviço que iria comunicar através de alguns meios. Você poderia ter a gravação utilitário de configuração para um arquivo (talvez um arquivo de configuração XML) para atualização de configuração, em seguida, basta reiniciar o serviço para atualizar a configuração.

Se ele precisa ser executado quando nenhum usuário estiver conectado, você precisa de um serviço. Se é um aplicativo de usuário que não precisa estar em execução quando todos os usuários estão desconectados, em seguida, uma aplicação da bandeja do sistema seria OK.

Construção de um serviço com UI ganchos sons complicada para o que você está tentando alcançar. A sons aplicação da bandeja do sistema certo para isso, eu definitivamente ir por esse caminho.

Depende do tamanho do aplicativo. Se é muito pequeno deixá-lo na bandeja se você allready did't escreveu esta solução

Se você precisa que ele seja executado sempre X horas a máquina está funcionando, mesmo se ninguém estiver conectado , então ou uma tarefa agendada ou um serviço pode estar certo.

Qual será o serviço estar fazendo no "tempo morto" entre downloads? Se a resposta não é nada, tarefa, então, agendada é quase certamente certo. Você gostaria de criar um aplicativo de console para executar como a tarefa agendada.

Seria bom se soubéssemos mais sobre o que, se houver, User Interface está sendo empregado.

Gostaria de criar o processamento principal como um serviço do Windows, caso contrário, se sua máquina for reinicializado e você não fazer logon, você não terá o processo começou a se sentar na bandeja (e, portanto, o seu processo vai run). Alternativly criar um aplicativo de console manequim ou Silar e executar esse através das janelas programador. Também com um serviço do Windows, se ele falhar, você pode configurá-lo para reiniciar automaticamente que você não pode (facilmente) fazer com janelas applicaition sentado na bandeja.

Eu teria, então, uma segunda aplicação com uma interface gráfica que escreve a configuração de um arquivo de configuração comum que é usado por ambos os aplicativos.

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