2009-02-27 10 views
5

Je trouve ce code:Quelle est l'utilisation de Invoke() dans .net?

this.Invoke(new EventHandler(EventGetSum)); 

est-ce pas la même chose que l'écriture:

EventGetSum(); 

Quelle est l'utilisation de ce?

+0

C'est un très mauvais titre, peut-être que vous devriez envisager de le changer pour quelque chose de plus descriptif – grapefrukt

+0

Cochez cette question http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -méthode-à-un-windows-forms-control/571749 # 571749 – alex2k8

Répondre

13

Si vous écrivez EventGetSum() immédiatement appelle la méthode EventGetSum.

Si vous écrivez new EventHandler(EventGetSum), cela crée un délégué qui appelle (à son tour) EventGetSum lorsqu'il est appelé.

L'appel à Control.Invoke appelle le délégué donné du thread d'interface utilisateur responsable du contrôle. Cela est nécessaire car vous ne devez pas accéder aux éléments de l'interface utilisateur à partir de threads arbitraires.

5

Il exécute la méthode EventGetSum dans le thread auquel appartient la fenêtre this.

4

Ceci est normalement utilisé pour traiter les appels d'interface utilisateur croisés.

Consultez la documentation MSDN pour ISynchronizeInvoke.