2010-01-22 6 views
1

salutations, im nouveau à la programmation. Au moment où mon application utilise des délégués pour traiter/exécuter des méthodes qui résident dans une autre classe/objet.C# Invoke Action Accès au thread croisé

mais j'obtenais une erreur indiquant qu'ils résidaient dans des threads séparés. donc après recherche sur le Web, je suis venu avec ceci:

this.Invoke(new Action(delegate() { this.ChatRichTextBox.AppendText(EventArgs.commMessage); })); 

cela a bien fonctionné accepter que je ne sais pas ce qui se passe. Je viens de coller le code et ça a marché. Maintenant, j'ai besoin de faire cela différemment, car le compilateur dit qu'il ne peut pas faire> <! = Opérations dans cette action.

s'il vous plaît conseiller sur la meilleure façon de mettre en œuvre cela?

merci beaucoup.

+0

Je ne comprends pas ce que vous voulez dire quand vous dites "il ne peut pas faire><= opérations!". pouvez-vous poster ce code? – hackerhasid

+0

je voudrais mais im loin de mon ordinateur en ce moment. jusque là. Merci. – iTEgg

Répondre

4

L'accès aux contrôles Windows Forms est pas intrinsèquement thread-safe. Si vous avez deux ou plusieurs threads en manipulant l'état d'un contrôle, il est possible pour forcer le contrôle dans un état incohérent . D'autres bogues liés au fil sont possibles, tels que que les conditions de course et les blocages. Il est important de s'assurer que l'accès à vos contrôles est effectué d'une manière thread-safe .

Il est dangereux pour appeler une commande à partir d'un fil autre que celui qui l'a créé le contrôle sans utiliser la méthode d'invocation .

+0

Est-ce lié à>

+0

Il explique les opérations inter-thread (dont l'OP ne comprend pas) –

Questions connexes