2009-11-10 4 views
1

Je rencontre des problèmes avec un petit ircbot que j'écris. Fondamentalement, je me connecte au serveur en utilisant un tcpclient dans une classe séparée, qui fonctionne également sur son propre thread. Je veux afficher le texte du serveur dans un contrôle richtextbox sur le formulaire principal.Problème d'interface utilisateur et de tcpClient dans vb.net

Le gros problème que j'ai est que dès que le texte commence à arriver dans l'ensemble de l'application se bloque. J'ai commencé par essayer d'utiliser un événement que le formulaire principal écouterait puis ajouterais le texte à la zone de texte, qui fonctionnerait jusqu'à ce que le texte cesse de venir et que l'application se fige à nouveau.

J'ai également essayé d'utiliser un délégué avec le même résultat. Quelqu'un d'autre a-t-il eu ce problème?

+0

Il semble que la réception de code s'exécute dans le thread UI, pas le thread que vous avez créé manuellement. Afficher le code de fonction de thread, cela peut aider à trouver l'erreur. –

Répondre

0

Essentiellement, seul le thread d'interface utilisateur est autorisé à accéder au formulaire. Il y a plusieurs façons de communiquer entre les threads. Une solution simple consiste à mettre un temporisateur sur le formulaire et à interroger périodiquement les mises à jour du thread TCPClient.

+0

ne déclenche pas l'événement aussi bien qu'une minuterie, car il ne devrait déclencher que lorsque l'événement se produit? – user208010

+0

Non, car le code d'événement s'exécute sur un thread d'arrière-plan, tandis que l'événement de l'horloge va s'exécuter sur le thread d'interface utilisateur. –

+0

Est-il possible que le problème puisse être causé par le fait que la zone de texte se trouve sur une forme dont elle-même est l'enfant d'un formulaire MDI? – user208010

Questions connexes