Thread en execution parallele (genre démon unix) à une interface de formulaires [Résolu]

Signaler
Messages postés
19
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
1 août 2007
-
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011
-
salut les loulou, je viens requerir votre aide parceque je pinaille un peut avec c#....
voila ce que je veux faire
mon projet consiste a faire un logiciel de supervision d'activité de serveurs :
j'ai un prog qui lance une interface de formulaire et en parallele je veut un démon qui toutes les "X" secondes vérifie l'état du serveur

j'ai donc imaginé le systeme suivant :

PROG -> lance une thread de traitement
            -> ouvre le premier formulaire

j esperais faire fonctionner le thread comme un démon unix, mais j'obtiens pas vraiment ca... :x
en fait, le probleme est que le thread ne semble pas s'executer en permanance malgres des boucles infinies...

dans l'appel je fais :

using System.Threading;

namespace SuperVision{
    class Programme{
        private static void DemarrerModuleSurveillance(){
            ModuleSurveillance LeModuleSurveillance = new ModuleSurveillance();
            LeModuleSurveillance.Surveiller();
        }
        public static Thread TacheModuleSurveillance = new Thread(new ThreadStart(DemarrerModuleSurveillance));
        static void Main(){
            new frm_Menu().ShowDialog();
            TacheModuleSurveillance.Start();
        }
    }
}

est - ce que je suis dans la bonne démarche pour commencer et si oui, pourquoi ca déconne?

Merci

8 réponses

Messages postés
219
Date d'inscription
jeudi 6 juillet 2006
Statut
Membre
Dernière intervention
7 septembre 2009

ben si je me trompe pas, ton thread ne dois pas se démarrer vu que le showdialog interromp ton exécution jusqu'à fermeture du formaulaire, il doit falloir mettre Show simplement ou Application.Run sur ta form
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

2 choses a dire :

la premiere ton code :
new frm_Menu().ShowDialog();
n'a aucune utilité puisque theoriquement une boite d edialogue modale n'effectue pas les modification elle renvoi une valeur permettant de savoir si l'utilisateur a valider, annuler cliqué sur oui, non, abandon ect ...
la tu pourras absolument pas le gerer et donc c'est inutile :p

sinon pour le thread il te suffit de mettre :
           TacheModuleSurveillance.Start();
juste avant la ligne :
            new frm_Menu().ShowDialog();

comme ca le thread se lance en parallele et juste apres la boite de dialog s'ouvre car le faite de demarrer un thread ne prend pas la mains alors que le showdialog attend la validation et seulement apres il va lancer le thread

pour ta boite de dialogue tu devrais lire (ou relire) la doc sur "DialogResult" et comment affecté des valeur de dialogresult a tes bouton si tu créé la boite modale toi meme, le code post validation NE SE FAIT JAMAIS !!!! DANS LA BOITE MODALE NI LE TEST DE BOUTON
le seul code qu'est censé effectué la boite modale c'est juste le mecanisme dynamique de l'interface TEMPORAIRE pour l'utilisateur, le seul moment ou t'es autorisé a effectué uen action de validation dedans ca serait un boutton type "appliquer"
de cette facon si ca reste temporaire tu peux gerer les action d'annulation sans avoir besoin de garder l'etat anterieur en memoire ce qui gaspille de la mémoire et du temps d'execution

TeBeCo
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

surtout :
DialogResult rs = Frm_Menu.Showdialog();

Switch(rs)
{
...
[Gestion des cas]
...
}
Frm_Menu.Dispose();

c'est plus ca dont je parlais

TeBeCo
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

et pour le reste t'as testé voir si ca repond a ton problème ?

TeBeCo
Messages postés
19
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
1 août 2007

mais justement, ce que je voudrais c'est que mon thread et mes formulaires s'executent en meme temps sans se bloquer l'un l'autre
Messages postés
19
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
1 août 2007

Pour le coup du << new frm_Menu().ShowDialog(); >>, frm_Menu est en fait un formulaire.
Je fais ca au lieu de faire frm_Menu MonMenu=new frm_Menu(); Frm_Menu.Showdialog();
à la fin du traitement je fais un this.Dispose(); pour le détruire.
Je sais pas trop si c'est du bricolage et si c'est correct pour la gestion de mémoire
En tout cas ca ouvre des Forms....
Messages postés
19
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
1 août 2007

oué c'est du bon
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

je t'en pris bonne continuation avec .net

TeBeCo