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

Résolu
Capitaine Iron Messages postés 19 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 1 août 2007 - 26 juin 2007 à 16:48
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011 - 28 juin 2007 à 18:02
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

cs_Yxion Messages postés 219 Date d'inscription jeudi 6 juillet 2006 Statut Membre Dernière intervention 7 septembre 2009
26 juin 2007 à 22:29
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
3
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
27 juin 2007 à 13:38
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
3
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
27 juin 2007 à 18:22
surtout :
DialogResult rs = Frm_Menu.Showdialog();

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

c'est plus ca dont je parlais

TeBeCo
3
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
27 juin 2007 à 18:23
et pour le reste t'as testé voir si ca repond a ton problème ?

TeBeCo
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Capitaine Iron Messages postés 19 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 1 août 2007
27 juin 2007 à 09:22
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
0
Capitaine Iron Messages postés 19 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 1 août 2007
27 juin 2007 à 14:03
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....
0
Capitaine Iron Messages postés 19 Date d'inscription lundi 14 juin 2004 Statut Membre Dernière intervention 1 août 2007
28 juin 2007 à 09:05
oué c'est du bon
0
TeBeCo Messages postés 467 Date d'inscription lundi 24 juin 2002 Statut Membre Dernière intervention 9 mars 2011
28 juin 2007 à 18:02
je t'en pris bonne continuation avec .net

TeBeCo
0
Rejoignez-nous