toufou2006
Messages postés90Date d'inscriptionjeudi 6 avril 2006StatutMembreDernière intervention17 février 2014
-
30 oct. 2009 à 15:57
toufou2006
Messages postés90Date d'inscriptionjeudi 6 avril 2006StatutMembreDernière intervention17 février 2014
-
2 nov. 2009 à 18:59
Bonjour
voici mon erreur, pouvez vous me dire comment la contourner ou al resoudre ?
Opération inter-threads non valide : le contrôle 'Label1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
label1 est creer dans l ide et cette operation arrive quand le reseau essaie de se connecter , et au moment ou j essaie de changer le contenu de label1
la c est au moment ou il refuse la connection
j essaie d adapter un code source trouver sur le site
il y a le cleint et le serveur dans al meme page, je veux le differencier
avec une appli client et la utre serveur
NHenry
Messages postés15083Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention19 septembre 2023159 1 nov. 2009 à 21:24
Bonjour,
Pour agir d'un thread à partir d'un autre, pour accéder à un élément d'une form, il faut utiliser les méthodes :
InvokeRequired (pour savoir s'il faut appeler ...
Invoke (pour lancer un appel vers le thread principal).
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 nov. 2009 à 16:23
Salut,
Effectivement, tous les composants winform sont instanciés dans le thread pricipal de l'application, ainsi si tu utilise un autre thread (comme c'est le cas pour la classe socket par exemple), tu ne peux d'une procédure de la classe du second thread, appeler une méthode ou une propriété d'une classe d'un autre thread directement, En gros: c'est une protection (apparue avec le framework 2.0 me semble-t-il ?) pour limité les renvois entre deux thread qui pouraient freezer l'application.
La méthode de NHenry est donc la bonne réponse.
Une autre méthode consiste à implémenter ISynchronizeInvoke dans ta classe (celle du second thread), pour éviter d'avoir à saisir les InvokeRequired/Invoke dans chaque procédures événementielles.
++ Mayzz.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
toufou2006
Messages postés90Date d'inscriptionjeudi 6 avril 2006StatutMembreDernière intervention17 février 20141 2 nov. 2009 à 18:59
salut mega merci :) ^^
donc, je resume :) ^^
ma classe winform (donc ma page vb) creee une procedure , :) ^^
ensuite, en appelant les sockets :) ^^ je genere une 2e procedure
qui sont toutes 2 bien distinctes et ne peuvent pas communiquer ensemble
apres il existe des ptits mots doux qui permettent de rapprocher ses 2 mechantes ;) , c ets bien ca ?
Avant de vous embeter, je vais chercher un peu comment on utilise les ptits mots doux :) ^^