Bonjour à tous,
je fais un puissance 4 en wpf, et pour les jetons qui tombent dans la grille, j'aimerais bien faire un thread pour qu'on les voit tomber au fur et à mesure
( je sais qu'une animation aurait peut être été plus simple, mais comme on est obligé de faire un thread..)
voila j'vais un peu simplifier le code pour aller à l'essentiel :
(arrayImage est un tableau d'objets que j'ai créés, ayant comme attributs une référence vers une ellipse(sous le nom d'encoche) et un boolean)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 protected void Go() { for (int i = 0; i<=5; i++) { arrayImage[i, colonneBouton].Encoche.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (Action)(() => { arrayImage[i, colonneBouton].Encoche.Fill = ColorPlayer; gridPlateau.InvalidateVisual(); })); Console.WriteLine("je suis passé ici au tour numero " + i); }
(gridPlateau est une uniformGrid qui contient aussi une référence vers les mêmes ellipses que celle du tableau arrayImage)
théoriquement, ce code devrait me remplir toute la colonne avec des ellipses de la couleur souhaitée, seulement il ne colore que la case avec l'indice i=5 (tandis que les messages "je suis passé..." s'affichent normalement)
si je fais un break dans le for, il colorera la case i=0 ( ce qui est logique)
comment cela se fait qu'il n'effectue qu'une fois l'opération de colorer, alors que le message s'affiche le bon nombre de fois ?
D'avance, merci pour votre aide!
(voici l'appel du thread, même si je ne pense pas que l'erreur vienne de là..)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Thread t = new Thread (Go); t.Start(); t.Join();
Partager