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

Capitaine Iron 19 Messages postés lundi 14 juin 2004Date d'inscription 1 août 2007 Dernière intervention - 26 juin 2007 à 16:48 - Dernière réponse : TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention
- 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
Afficher la suite 

8 réponses

Répondre au sujet
cs_Yxion 219 Messages postés jeudi 6 juillet 2006Date d'inscription 7 septembre 2009 Dernière intervention - 26 juin 2007 à 22:29
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Yxion
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 27 juin 2007 à 13:38
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TeBeCo
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 27 juin 2007 à 18:22
+3
Utile
surtout :
DialogResult rs = Frm_Menu.Showdialog();

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

c'est plus ca dont je parlais

TeBeCo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TeBeCo
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 27 juin 2007 à 18:23
+3
Utile
et pour le reste t'as testé voir si ca repond a ton problème ?

TeBeCo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TeBeCo
Capitaine Iron 19 Messages postés lundi 14 juin 2004Date d'inscription 1 août 2007 Dernière intervention - 27 juin 2007 à 09:22
0
Utile
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
Commenter la réponse de Capitaine Iron
Capitaine Iron 19 Messages postés lundi 14 juin 2004Date d'inscription 1 août 2007 Dernière intervention - 27 juin 2007 à 14:03
0
Utile
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....
Commenter la réponse de Capitaine Iron
Capitaine Iron 19 Messages postés lundi 14 juin 2004Date d'inscription 1 août 2007 Dernière intervention - 28 juin 2007 à 09:05
0
Utile
oué c'est du bon
Commenter la réponse de Capitaine Iron
TeBeCo 467 Messages postés lundi 24 juin 2002Date d'inscription 9 mars 2011 Dernière intervention - 28 juin 2007 à 18:02
0
Utile
je t'en pris bonne continuation avec .net

TeBeCo
Commenter la réponse de TeBeCo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.