cs_RMI
Messages postés305Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 2 août 2010
-
3 juin 2005 à 09:07
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
3 juin 2005 à 13:50
Bonjour,
Voila mon problème:
J'ai une form avec un tabcontrol
Les 2 premières tabpages sont rempli dans le load du winform la 3ème contenant un treeview via un thread thArbo
thArbo = new Thread(new ThreadStart(ArboFill));
thArbo.Name="ArboFill";
thArbo.Start();
car la construction de l'arborescence est un peu longue.
Si je vais sur mon 3ème onglet et que le thread est terminé tout est OK pas de plantus.
Si le thread n'est pas terminé alors j'ai le message d'erreur suivant
Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.windows.forms.dll
Informations supplémentaires : L'action effectuée sur ce contrôle
est appelée à partir d'un thread incorrect. Vous devez marshaler le
thread correct en utilisant Control.Invoke ou Control.BeginInvoke pour
effectuer cette action.
Le problème, c'est que je ne comprends rien à l'utilisation de la fonction Invoke (malgrés les exemples présents sur le forum).
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 3 juin 2005 à 13:50
En fait, normalement tu n'as pas le droit de faire un appel direct des fonctions
appartenant a un thread (ici, ta form) depuis un autre thread (celui
qui rempli)
BeginInvoke te permet de faire un appel asynchrone de ces fontcions.
Et sinon, tu peux virer le morpion, et garder le Mx ;) Codes-sources
n'acceptant pas les pseudo a 2 lettres, j'ai rajouté le morpion...
rapport au jeu, pas a la bebete ;)