churrros
Messages postés19Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention 9 avril 2008
-
27 juil. 2007 à 17:23
churrros
Messages postés19Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention 9 avril 2008
-
1 août 2007 à 15:47
Ca fait plusieurs heures que je bataille, pourtant j'ai très bien compris le principe des délégués pour éviter les cross-threads . Là où je bloque c'est que, pour créer un évènement dans sa classe "serveur", LumesH utilise déjà des délégués. Pourtant, lorsqu'un évènement se produit et qu'un Label du WinForm est modifié pendant cet évènement je récupère un cross-threads. Comment faire pour que la méthode lancée par le thread appelle un délégué du WinForm (qui va appelé la méthode de modification du Label) plutôt qu'un délégué lié à l'évènement, tout en conservant la notion d'évènement?
J'avoue que je m'embrouille un peu tout seul là, ça fait des heures que je tourne en rond, c'est très confu tout ça pour moi... J'ai réussi à reproduire l'exemple de MX sans traiter d'évènement mais là, je bloque complètement!
Quelqu'un a peut-être déjà modifié le source Client-Serveur de LumesH pour qu'il ne génère plus de cross-threads...?
churrros
Messages postés19Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention 9 avril 2008 1 août 2007 à 00:11
J'y suis presque, sauf que je n'arrive pas à déclarer la classe à Threader en utilisant le mot clé "this" :
// créer une nouvelle instance du serveur
private
tcpServeur InstanceClasseServeur =
new
tcpServeur(
this);
Je ne peux pas utiliser cette syntaxe si je ne suis pas à l'intérieur d'une méthode, le compilateur me signale que "this" est hors contexte. Si je créé l'instance depuis une méthode ça fonctionne mais je ne peux accéder ensuite à cette instance que depuis cette même méthode.
Comment puis-je passer en paramètre mon objet Form sans utiliser "this"?
Vous n’avez pas trouvé la réponse que vous recherchez ?
churrros
Messages postés19Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention 9 avril 2008 1 août 2007 à 08:52
Oui en respectant le schéma de l'exemple effectivement aucun problème, mais dans ton exemple tu déclares l'instance de la classe à Threader dans une méthode de la Form appelante. Ce que je souhaite c'est pouvoir accéder à mon instance depuis n'importe quelle méthode de ma Form, donc j'suis obligé de la déclarer en dehors d'une méthode, et là, "this" ne passe pas...
Cela dit, ton exemple m'a quand même beaucoup aidé.
churrros
Messages postés19Date d'inscriptionmardi 26 juin 2007StatutMembreDernière intervention 9 avril 2008 1 août 2007 à 15:47
Ben ouais, ça marche nickel, c'était pas compliqué et pourtant j'y ai passé un sacré bout de temps sans trouver. Ca paraît tellement évident quand on a la réponse, j'ai vraiment du mal, vivement que tout cela soit limpide pour que j'évite de poser des questions cons.