J'ai actuellement une application qui est essentiellement une enveloppe pour ~ 10 "LongRunning" Task
s. Chaque thread doit continuer à fonctionner indéfiniment, mais parfois ils se bloquent ou tombent en panne, et parfois l'application wrapper se ferme spontanément (je n'ai pas encore pu le retrouver). En outre, l'application wrapper ne peut actuellement s'exécuter que pour un utilisateur, et cet utilisateur doit être celui qui redémarre les threads ou relance l'application entière.Conversion de l'application filetée en service
J'ai actuellement un utilitaire de surveillance pour me faire savoir quand les threads cessent de fonctionner afin qu'ils puissent être redémarrés manuellement, mais je voudrais les redémarrer automatiquement à la place. Je voudrais également que le wrapper soit disponible pour tout le monde pour vérifier l'état des threads, et pour que les threads soient exécutés même si le wrapper ne l'est pas. Sur la base de ces objectifs, je pense que je veux séparer les threads dans un service Windows, et convertir le wrapper en quelque chose qui peut simplement se connecter au service pour vérifier son état et le manipuler.
Comment ferais-je cela? Est-ce une architecture raisonnable? Devrais-je transformer chaque thread en un service distinct, ou devrais-je avoir un seul service multi-thread?
Modifier: Toutes les tâches se connectent au même ensemble de fichiers de sortie (via un TextWriter.Synchronized(StreamWriter)
), et je voudrais maintenir ce comportement.
Ils partagent tous la même connexion à la base de données, ce qui signifie que je dois tous les accepter pour fermer la connexion en même temps que nécessaire. Cependant, s'ils étaient séparés, ils pourraient chacun utiliser leur propre connexion à la base de données, et je n'aurais pas à m'inquiéter de la synchronisation. Je soupçonne en fait que cette étape est l'un des points d'échec actuels, donc la scission serait une bonne chose.
Les threads interagissent-ils les uns avec les autres? Devraient-ils partager des ressources statiques? – SLaks
@SLaks - Edité pour ajouter les ressources qu'ils partagent. – Bobson