Bonsoir
Alors je rencontre actuellement un problème avec une petite application et dont je n'arrive pas du tout à expliquer la raison. Je vous explique.
Imagine une classe singleton (manager), qui sert à gérer des messages d'alerte, warning et d'information, un logger en fait mais qui en plus affiche éventuellement les messages à l'écran dans une boite.
Ces info sont traitées par une classe se chargeant de générer les graphismes et d'afficher la forme finale à l'écran. En soit c'est pas bien compliqué.
Le problème:
-J'ai voulut rajouter un thread au niveau de la classe manager (singleton) pour vérifier en boucle si un nouveau message à été rajouté à la liste et donc faire appel aux traitements pour l'afficher à l'écran. Rien. Rien ne n'affiche.
- J'ai laissé tomber l'idée d'un thread séparé, j'ai donc choisi un timer dans la classe manager. Rien non plus.
Ce qui est bizarre, c'est que si je place ce timer dans une autre classe, p.ex une forme quelconque avec juste un bouton pour rajouter des messages à la liste à afficher, ben ca marche les messages s'affichent. Alors que dans les 2 cas le timer exécute exactement la même méthode présente dans le manager.
Alors je me suis dit, qu'il doit y avoir une couille avec mon singleton, et que le GC a du passer par là. Ben non, tout semble ok, pas de nullpointexception, les ressources imageset autres sont bien chargés et tout et tout.
Le truc qui m'a tué et ceci.
Comme expliqué avant si je place un timer dans la classe manager, les messages ne s’affiche pas, la forme n'apparaît pas à l'écran.
Par contre avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... MessageForm.Show(); }
Avec ca ma forme apparaît bien à l'écran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ... MessageForm.Show(); MessageBox("blabla") }
C'est quoi ce délire?????
(La forme semble quand même planter car il y a le sablier constamment. Mais au moins elle s'affiche.)
En gros:
- si j'appelle la méthode pour afficher les messages, à partir d'une autre classe que manager ca passe tout fonctionne sans problème du tout.
- si je rajoute une ligne de code de type MessageBox, ma forme apparaît (plante, mais elle apparait)
Je n'y comprends plus rien du tout.
Vous auriez un avis pour aiguiller ma recherche de bug, car là je m'arrache les cheveux.
Merci
Partager