-
Oui, ca devrait être OK :king:
C'est la technique la plus stable que j'ai trouvée pour l'utilisation des threads.
Maintenant il ne faut plus intéragir depuis tes threads avec des éléments de la fenêtre IHM mais c'est la fenêtre IHM qui doit envoyer des signaux ou modifier des variables globales (utilisées dans les threads).
Bon dév.,
Totof
www.sigmasys.fr
-
Not possible. J'ai un thread d'acquisition qui vient mettre à jour des variables globales chose que je ne peux faire depuis l'IHM car ca fait appel à une carte de communication réseau.(attendre un timerout depuis l'ihm est encore pire)
Dans la fenetre principal je n'ai qu'un timer qui vient regarder l'etat de certaines de ces variables pour animer un bouton par exemple.(5-10 lignes de code)
J'ai d'autres fenetres filles de la fenetre principale qui accèdent aussi aux variables globales (en lecture) pour animer des courbes ce genre de chose.
J'ai aussi un thread d'affichage (tu te souviens :lol: ) qui vient dessiner sur une image de la fenetre principale avec dcopieimage.
Pour l'instant avec les sections critiques je n'ai jamais eu de probléme en ce qui concerne les variables globales, c'est parfaitement synchronisé ;)
-
Ok je viens de terminer cela lancement des threads depuis une fenetre de démarrage en mode suspendu puis je fais un petit ThreadReprend à l'initialisation de mon IHM.
Y'a plus qu'a attendre que le bug apparaise :aie: C'est plutot sympa avec une fenetre de démarrage en arriére plan car maintenant je peux rediriger des messages supplémentaires sur cette fenetre ( un chat par exemple :P )
-
Pour la fenêtre IHM, je n'utiliserais pas de thread mais plutot un évènement pour dessiner le graphique que quand cela est nécessaire ou au pire un TimerSys. Je préfère laisser les threads aux tâches critiques.
Le réseau de communication c'est du ProfiBus ?
Bon dév.,
Totof
www.sigmasys.fr
-
C'est du XWay.
Au début le redessinage se faisait dans un timer de l'IHM principal c'est moi qui est voulu déporter cette tâche dans un thread car il ne s'agit pas d'affichage basic mais d'affichage critique aussi.
Dans un timer cela bloque l'IHM le temps de redessinage qui dans mon cas est également critique car l'opérateur peut avoir à ce moment là de mettre en urgence en pause le système. D'autant plus qu'il y a énormément de chose à dessiner.
Sinon il n'y a pas de thread dans la fenetre principal maintenant ;)
-
Alors ca devrait fonctionner. En fait, j'avais exactement les mêmes problématiques et le même type de projet à réaliser. J'ai batailler pendant 2 ans pour la mise en oeuvre du système, le système de production fonctionne actuellement 16h / jour et 6j / 7 (sous WD8).
Tu peux m'envoyer un email en cas de gros soucis.
Bon courage,
Totof
www.sigmasys.fr
-
On verra ce que cela donnera. Pour l'instant en production je n'ai jamais eu ce probléme de sablier à l'infini quand je clic sur un bouton de l'IHM principal.
Je me demande si WDTest n'y est pas pour quelque chose aussi, car si cela vient encore à arriver je me demande ce que je vais bien pouvoir faire...
En tout cas merci pour ta proposition et ton soutien :mrgreen:
-
Toujours le même probléme après répétition et répétition de clic.
Je me demande si je ne vais pas laisser ces fenetres ouvertes en arrière plan aussi...
-
Re,
Dans mon projet, il n'y avait qu'une seule fenêtre avec visualisation du process de fabrication (+ des boutons) mais pas de fenêtres MDI (pas de ouvreFille). Si ca peut t'aider.
Bon dév.,
Totof
www.sigmasys.fr
-
Le truc c'est que là cela arrive dans le code d'un bouton où je fais un Ouvre pas un OuvreFille.
Je viens de supprimer les OuvreFille sur les autres boutons quand même car c'est vrai que cela peut être problématique.