Est-ce qu'une application avec l'icône «Barre d'état système» convient pour un planificateur fonctionnant en permanence ou dois-je créer un service Windows?

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

  •  07-07-2019
  •  | 
  •  

Question

Condition préalable - Je souhaite exécuter une tâche périodique dans un environnement Windows pour mon application. Il aura une interface simple permettant une configuration de base (par exemple, les URL et leur fréquence d’exécution). Je veux qu'il fonctionne toutes les X heures (configurable) lorsque la machine est en cours d'exécution.

Question - Est-ce que je crée simplement une application avec une présence dans la barre d'état système pour cela? Ou devrais-je créer un service qui a une interface utilisateur distincte qui s'y accroche.

À propos - Je suis un débutant en développement C # avec Visual Studio Express, n’oubliez pas. De plus, si vous pouviez donner un aperçu rapide de la conception de ce que vous recommanderiez, ce serait très bien pour quelqu'un de novice (par exemple, si vous proposez un service, cela signifie-t-il que vous avez réellement besoin d'une application pour le service et d'une autre a une interface utilisateur qui fait la configuration pour le service?)

Était-ce utile?

La solution

J'ai développé une telle application l'année dernière. Une simple application Windows Form qui n’a qu’une icône dans la barre des tâches. L'utilisateur peut configurer l'application via un menu contextuel (affiché lorsque l'utilisateur clique avec le bouton droit de la souris sur l'icône de la barre des tâches). J'ai utilisé une minuterie qui déclenche l'événement Elapsed ...

Si cette application est la seule à effectuer certaines tâches à temps, utilisez simplement une application Windows Forms avec une icône de barre des tâches. Mais s'il existe plusieurs applications possibles pouvant envoyer des entrées et déclencher une activité, vous devez envisager de déplacer la fonctionnalité commune dans un service Windows. Vous devez également envisager d'utiliser un service Windows si l'application s'exécute sur un ordinateur doté de services Terminal Server (utilisateurs multiples - > plusieurs instances de votre application).

Je ne voudrais pas utiliser une tâche planifiée! C'est moins convivial ...

-Pavel Nikolov

Autres conseils

Si vous recherchez quelque chose de simple, envisagez d'utiliser le planificateur Windows pour planifier les travaux, un shim pour exécuter les travaux après le démarrage du planificateur et un utilitaire de configuration permettant la configuration. Mais je vous recommanderais de bien vouloir évaluer la flexibilité et la fiabilité des emplois. Si les travaux ne sont pas exécutés correctement, une application utilisateur dans la zone de notification suffit. Mais si le travail est crucial pour une fonction de l'entreprise ou une autre opération, je choisirais le planificateur ou le service. Si vous offrez un service, vous disposerez d'un utilitaire de configuration et d'un service permettant de communiquer par certains moyens. Vous pouvez avoir l’utilitaire de configuration écrire dans un fichier (peut-être un fichier de configuration XML) pour mettre à jour la configuration, puis redémarrer le service pour mettre à jour la configuration.

S'il doit être exécuté sans qu'aucun utilisateur ne soit connecté, vous avez besoin d'un service. S'il s'agit d'une application utilisateur qui n'a pas besoin d'être exécutée lorsque tous les utilisateurs sont déconnectés, une application de la barre d'état système serait OK.

Créer un service avec des points d’interface utilisateur semble trop compliqué pour ce que vous essayez d’atteindre. Une application de la barre d'état système semble bien pour cela, je voudrais certainement aller de cette façon.

Cela dépend de la taille de l'application. Si c'est assez petit, laissez-le dans le bac si vous n'avez pas déjà écrit cette solution

Si vous en avez besoin pour exécuter toutes les X heures d'utilisation de la machine, même si personne n'est connecté , une tâche planifiée ou un service peut être approprié.

Que fera le service dans le " temps mort " entre les téléchargements? Si la réponse est non, la tâche planifiée est presque certainement juste. Vous souhaitez créer une application console à exécuter en tant que tâche planifiée.

Cela aiderait si nous en savions plus sur l'interface utilisateur utilisée, le cas échéant.

Je créerais le traitement principal en tant que service Windows, sinon, si vous redémarrez l'ordinateur et que vous ne vous connectez pas, le processus ne commencera pas à s'asseoir dans la barre d'état (et par conséquent votre processus ne s'exécutera pas). Vous pouvez également créer une application de console factice ou un silar et l'exécuter via le planificateur de fenêtres. De plus, avec un service Windows, vous pouvez le configurer pour qu’il redémarre automatiquement en cas de plantage, ce que vous ne pouvez pas (facilement) faire avec une application Windows installée dans le tiroir.

J'aurais alors une deuxième application avec une interface graphique qui écrit la configuration dans un fichier de configuration commun utilisé par les deux applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top