2009-02-27 13 views
5

me encontré con este código:¿De qué sirve Invoke() en .net?

this.Invoke(new EventHandler(EventGetSum)); 

No es esto lo mismo que escribir:

EventGetSum(); 

Cuál es el uso de esta?

+0

Es un título bastante malo, tal vez debería considerar cambiarlo por algo más descriptivo – grapefrukt

+0

Marque esta pregunta http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access -method-to-a-windows-forms-control/571749 # 571749 – alex2k8

Respuesta

13

Si escribe EventGetSum() que inmediatamente llama al el método EventGetSum.

Si escribe new EventHandler(EventGetSum) que crea un delegado que (a su vez) llamará a EventGetSum cuando se invoque.

La llamada a Control.Invoke invoca al delegado dado del subproceso de la IU responsable del control. Esto es necesario porque no debe acceder a los elementos de la interfaz de usuario desde hilos arbitrarios.

5

Ejecuta el método EventGetSum en el hilo al que pertenece la ventana this.

4

Esto se usa normalmente cuando se trata de llamadas UI de subprocesos cruzados.

Mire la documentación de MSDN para ISynchronizeInvoke.