EricNRC
Messages postés24Date d'inscriptionjeudi 25 août 2005StatutMembreDernière intervention24 janvier 2008
-
3 août 2006 à 20:06
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006
-
3 août 2006 à 22:00
Bonjour
Tout d'abord Bonne journée à tous!
Je tente de programmer avec VB 2005 express et je me bute a une sérieux problème
J'aimerais savoir s'il existe au moins une personne qui comprend pourquoi à chaque fois que je tente d'assigné une valeur text a un text box j'ai toujours l'erreur "Cross-Thread Operation non-valid" ... d'ou ça sort cette M.... là! je n'ai jamais eu ce type d'erreur en VB 2003 . Alors si vous savez pourquoi j'ai ce genre d'erreur, pouvez vous me dire comment y remedier svp? Les Helps sur le web son completement inutile, je n'y comprend rien...
pymaster
Messages postés74Date d'inscriptionvendredi 14 juillet 2006StatutMembreDernière intervention14 août 2006 3 août 2006 à 20:40
bonjour !
Erreur chiante mais nécéssaire. Les Cross Thread error sont une protection qui empêche que tu monte de code de manière à ce que deux Threads puisse avoir accès à une même ressource en même temps. Ce genre de situation peut créé des bugs aléatoires presque impossible à corrigé et qui peuvent te rendre chauve avant l'âge ^_^. Le Threads principal, celui qui contrôle l'interface et celui dans lequel s'exécute ton code habituellement lorsque que tu ne fais pas de multiThread devrait être le seul à jouer avec l'interface.
Bien sur ya un moyen de contourner ça, il faut faire des Invoke des fonctions.
Je vais te donner un exemple avec unparcque j'ai le code juste à coté de moi, mais c'est possible d'utiliser ça pour tout
Private Delegate Sub addControlToPanel(ByVal value As System.Windows.Forms.Control)
Un deleguate qui à la même signature que la fonction MonPanel.Controls.Add. Donc lorsque je veux ajouter un control à mon panel je fais un invoke sur celui-ci. Je lui passe l'adresse de la fonction en premier paramètre et les autres paramètre je lui pousse tous les paramètres que cette même fonction demande.
Voila, c'est complexe mais c'est comme ça.
Ça fait pas mal de stock à comprendre, si ta besoin de plus de précision tu peux me le demander, moi aussi j'ai eu des troubles avec ça ^_^
EricNRC
Messages postés24Date d'inscriptionjeudi 25 août 2005StatutMembreDernière intervention24 janvier 2008 3 août 2006 à 21:28
Merci! PY
Si je comprend bien ton exemple est valide lorsque tu veux crée des controls en runtime! Mais lorsque je veux faire un invoke pour changer la valeur d'un textbox.text . la valeur .text est une property donc je ne peu pas avoir la même signature. PCQ les delegate n,'accepte pas les propertys.