2010-12-09 2 views
2

J'ai lu les sujets traités à ce sujet mais je n'arrive pas à les faire fonctionner. Je tente de créer un eventlog pour mon application. Il commence par ouvrir "Form1" à partir de laquelle j'ai une fonction qui ouvre "Form2". "Form2" démarre un TcpListener multithread. Comment je modifierais la zone de texte dans "Form1" de "Form2" un thread exécutant le TcpListener. Aussi comment voulez-vous le changer d'une autre forme/classe ou est-ce fait de la même manière. Des exemples seraient les bienvenus, donc je peux décomposer et comprendre.Mettre à jour la zone de texte de la classe dans un fil différent

Merci beaucoup

+0

Dupliquer - voir les réponses à cette question: http://stackoverflow.com/questions/519233/writing-to-a-textbox-from-another-thread – shf301

Répondre

1

Mise à jour des commandes à partir d'un fil de fond est un problème commun, et le plus souvent la façon la plus simple de le faire est d'utiliser un BackgroundWorker. Découvrez certains des didacticiels MSDN sur l'utilisation d'un BackgroundWorker.

Cela fonctionne bien lorsque vous effectuez une tâche d'arrière-plan et souhaitez effectuer des mises à jour au cours de la tâche ou à la fin de la tâche. Cependant, il semble que vous fassiez quelque chose d'un peu différent puisque vous attendez l'entrée d'une socket. Dans ce cas, il est parfois plus facile de faire en sorte que le thread d'arrière-plan ajoute simplement les événements qu'il reçoit dans une file d'attente, puis utilise un événement timer pour traiter la file d'attente et mettre à jour les contrôles à mettre à jour. Assurez-vous simplement d'utiliser une minuterie Windows Forms, et non le minuteur Threading.

Questions connexes